问题:
在Unity的官方文档中关于Awake 和Start函数的解释里有提到:
原文:Each GameObject's Awake is called in a random order between objects.
翻译:多个GameObject的Awake之间是以随机的顺序调用的。
如果按照官方文档里的说法,那我们是不是就没办法控制多个脚本间Awake的顺序了?
No! No! No!
------------------------------------------------------------------------------------------------------------------------------------------------------
先说结论:
经过测试以后发现,各个GameObject的脚本之间的Awake、OnEable和Start等函数的执行是有规律的:
- 最先被添加到GameObject上的脚本中的Awake、OnEable是最后被调用的,反之最后被添加的则会最先被调用。
- 当每个脚本的Awake、OnEable都被调用完了之后,才会调用各个脚本的Start函数。
- 每个脚本的Start都被调用完了之后,才会调用各个脚本的FixedUpdate函数。
我们再总结一下:
- 最先被添加的脚本最后被执行,反之则反。
- Awake和OnEable成对出现,一个脚本的Awake和OnE