Version: 6000.3
语言: 中文
进入播放模式,禁用场景重新加载
脚本序列化

禁用域和场景重新加载的详细信息

禁用域重新加载和场景重新加载时 Unity 跳过的内容

从高层次的角度来看,进入游戏模式包括以下主要阶段:

  • 备份当前场景。这仅发生在场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
    请参阅术语表
    已被修改。允许 Unity 在退出播放模式时将场景恢复到播放模式开始前的状态。
  • 域重新加载。通过重新加载脚本域来重置脚本状态。
  • 场景重新加载。通过重新加载场景来重置场景状态。
  • 更新场景。这种情况发生两次;一次不渲染,一次有渲染。

域重新加载和场景重新加载的组合任务会重置脚本域,并模拟应用程序在播放器中运行时的启动行为。当您在项目设置(Project Settings) 广泛的设置集合,允许您配置物理、音频、网络、图形、输入和项目的许多其他区域的行为方式。更多信息
请参阅术语表
.

下图提供了有关 Unity 在禁用域重新加载和场景重新加载时跳过的确切事件的详细信息。蓝色表示禁用域重新加载时 Unity 跳过的事件,绿色表示禁用场景重新加载时 Unity 跳过的事件。

MonoBehaviour 脚本生命周期中的事件函数。禁用域重新加载时跳过的事件功能将以蓝色突出显示。禁用场景重新加载时跳过的事件函数将以绿色突出显示。
MonoBehaviour 脚本生命周期中的事件函数。禁用域重新加载时跳过的事件功能将以蓝色突出显示。禁用场景重新加载时跳过的事件函数将以绿色突出显示。

当场景重新加载和域重新加载都启用时,Unity 会做什么

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

  1. AssemblyReloadEvent beforeAssemblyReload事件。
  2. C# 域已停止:
    a。
    OnDisable()为所有 ScriptableObjects 和 MonoBehaviour 调用。
    湾。Unity 等待所有异步作完成。
  3. 所有 MonoBehaviour 和 ScriptableObjects 的状态都是序列化的。
    一个。
    OnBeforeSerialize()被称为。
    湾。所有公共和私有字段值都序列化,但标记为
    [NonSerialized].
  4. 托管包装器与本机 Unity 对象断开连接。
  5. 重新加载 Unity 子域:
    a。单域卸载:
    i。这
    AppDomain.DomainUnload事件。
    ii. Unity 子域被销毁
    1.调用 GC 和终结器。
    2. 线程终止。
    3. 删除所有 JIT 信息。
    湾。将创建新的 Unity 子域。
  6. 装配体已加载:
    a。系统组件已加载。
    湾。将加载 Unity 程序集。
    c.加载用户程序集。
  7. 同步上下文已初始化。
  8. 脚本状态将恢复。
    一个。重新创建所有 Unity 对象的可编写脚本部分。
    我。调用构造函数,并为静态分配默认值。
    湾。所有 Unity 对象的状态都反序列化:
    i。将恢复所有 Unity 对象的序列化状态。
    1. 该
    OnAfterDeserialize事件。
    第二。
    OnValidate()被称为。
    iii. 对于
    脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
    请参阅术语表
    使用[ExecuteInEditMode]属性:
    1。
    OnEnable()被称为。
    阿拉伯数字。
    OnDisable()被称为。
    3.
    OnDestroy()被称为。
  9. 调用具有 InitializeOnLoadInitializeOnLoadMethod 的方法。
  10. AssemblyReloadEvent afterAssemblyReload被称为。

其他资源

进入播放模式,禁用场景重新加载
脚本序列化