Version: 2019.4
场景重新加载
Editor 故障排除

关于进入运行模式的详细信息

启用场景重新加载和域重新加载后,以下是 Unity 进入运行模式时执行的所有进程和事件的完整列表:

  1. 引发 AssemblyReloadEvent beforeAssemblyReload 事件。
  2. 停止 C# 域: a. 针对所有 ScriptableObject 和 MonoBehaviour 调用 OnDisable()。 b. Unity 等待所有异步操作完成。
  3. 序列化所有 MonoBehaviour 和 ScriptableObject 的状态。 a. 调用 OnBeforeSerialize()。 b. 序列化所有公共字段和私有字段值,标有 [NonSerialized] 的值除外。
  4. 托管的包装器与原生 Unity 对象断开连接。
  5. 重新加载 Unity 子域: a. 卸载 Mono 域: i. 引发 AppDomain.DomainUnload 事件。 ii.销毁 Unity 子域
    1. 调用 GC 和终结器。 2. 终止线程。 3. 删除所有 JIT 信息。 b. 创建新的 Unity 子域。
  6. 加载程序集: a. 加载系统程序集。 b. 加载 Unity 程序集。 c. 加载用户程序集。
  7. 初始化同步上文。
  8. 恢复脚本状态。 a. 重新创建所有 Unity 对象的可编程部分。 i. 调用构造函数,并为统计信息分配默认值。 b. 反序列化所有 Unity 对象的状态: i. 恢复所有 Unity 对象的序列化状态。 1. 引发 OnAfterDeserialize 事件。 ii.调用 OnValidate()。 iii.对于使用 [ExecuteInEditMode] 属性的脚本: 1. 调用 OnEnable()。 2. 调用 OnDisable()。 3. 调用 OnDestroy()
  9. 调用包含 InitializeOnLoadInitializeOnLoadMethod 的方法。
  10. 调用 AssemblyReloadEvent afterAssemblyReload

场景重新加载
Editor 故障排除