这里准备记录的不是,生命周期执行的顺序,而是它什么时候不会执行!!!关于执行顺序,Unity Manual里有非常详细的流程介绍:Order of execution for event functions
1. Awake
Awake: This function is always called before any Start functions and also just after a prefab
is instantiated. (If a GameObject is inactive during start up Awake is not called until it is made active.)
OnDestroy是这篇记录的起因。
在测试重启流程时,发现有些脚本的OnDestroy没有执行,导致一些引用没有被及时清理,比如:C#里持有的xLua回调。如果这些delegate没有被及时清理,在销毁Lua State时会报错InvalidOperationException: try to dispose a LuaEnv with C# callback!.
经过推测+测试,OnDestroy跟Awake是要配对执行的。如果一个对象的Awake没有执行,那么它销毁时OnDestroy也不会执行!
这个机制其实会产生一些问题,
3. OnDisable