Version: 6000.3
语言: 中文
进入禁用域重新加载的游戏模式
禁用域和场景重新加载的详细信息

进入播放模式,禁用场景重新加载

默认情况下,进入播放模式时场景重新加载处于启用状态。这意味着当您进入播放模式时,Unity 会销毁所有现有的场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
并从磁盘重新加载场景。随着项目变得越来越复杂,按下 播放(Play) 按钮和场景在编辑器中完全加载之间的时间也会增加。

禁用场景重新加载时,该过程花费的时间会更少。Unity 不会从磁盘重新加载场景,而是仅重置场景的修改内容。Unity 仍然调用相同的事件函数(例如OnEnable,OnDisableOnDestroy)就像场景是新加载的一样。

进入播放模式时禁用场景重新加载的影响

禁用场景重新加载后,在编辑器中启动应用程序所需的时间不再代表构建版本中的启动时间。如果你想调试或分析项目启动期间发生的情况,你应该启用场景重新加载,以更准确地表示应用程序的构建版本中发生的真实加载时间和进程。

否则,禁用场景重新加载对项目的影响应该很小。但是,由于场景重新加载与域重新加载密切相关,因此存在一些重要差异:

  • Unity 不会重新创建现有对象或调用构造函数,这意味着非序列化字段在返回编辑模式时会保留在播放模式下分配给它们的值。这适用于所有脚本类型的字段,包括 MonoBehaviours、ScriptableObjects 和您自己的自定义 C# 类型。有关在不同上下文中序列化和未序列化的详细信息,请参阅序列化规则
    • 注意private字段不会作为常规构建管道的一部分进行序列化,而是作为编辑器热重载脚本的一部分进行序列化。这就是为什么private在播放模式下修改的字段可能会在退出播放模式时重置为原始值,即使禁用了进入播放模式时的场景和域重新加载也是如此。
  • Unity 将 null 转换为 nullprivateinternal数组的字段和Listtype 设置为空数组或List对象,并且它们在运行时保持非空(非编辑器)脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
    请参阅术语表
    .
  • [ExecuteInEditMode][ExecuteAlways]不收到OnDestroyAwake调用。 在编辑模式下,这些脚本可能会修改自己的字段或其他运行时脚本的字段。为了缓解这种情况,您可以在OnEnable回调,并在检查EditorApplication.isPlaying. 有关此示例以及有关分离播放模式和编辑模式代码的重要性的更多上下文,请参阅[ExecuteAlways]API 说明。

有关禁用场景重新加载时跳过的事件的更多详细信息,请参阅禁用域和场景重新加载的详细信息

其他资源

进入禁用域重新加载的游戏模式
禁用域和场景重新加载的详细信息