从较高的角度看,进入运行模式包括以下主要阶段:
Domain Reload 和 Scene Reload 的组合任务会重置脚本域并模拟应用程序在播放器中运行时的启动行为。如果在 Project Settings 中禁用这些步骤,Unity 会跳过这些步骤。
下图提供了有关禁用 Domain Reload 和 Scene Reload 时 Unity 跳过的确切事件的详细信息。蓝色表示禁用 Domain Reload 时 Unity 跳过的事件,绿色表示禁用 Scene Reload 时 Unity 跳过的事件。
启用场景重新加载和域重新加载后,以下是 Unity 进入运行模式时执行的所有进程和事件的完整列表:
beforeAssemblyReload
事件。OnDisable()
。
b. Unity 等待所有异步操作完成。OnBeforeSerialize()
。
b. 序列化所有公共字段和私有字段值,标有 [NonSerialized]
的值除外。AppDomain.DomainUnload
事件。
ii.销毁 Unity 子域OnAfterDeserialize
事件。
ii.调用 OnValidate()
。
iii.对于使用 [ExecuteInEditMode]
属性的脚本:
1. 调用 OnEnable()
。
2. 调用 OnDisable()
。
3. 调用 OnDestroy()
。afterAssemblyReload
。