【】场景重新加载默认情况下的已启用

【】场景重新加载默认情况下的已启用

场景重新加载

默认情况下启用场景重新加载。这意味着,当进入运行模式时,Unity 会销毁所有现有的场景游戏对象,并从磁盘重新加载场景。Unity 执行此操作所需的时间随着场景的复杂性而增加,这意味着随着项目变得越来越复杂unity 加载场景,在按下“播放”按钮和场景完全加载到编辑器中之间,您必须等待更长的时间。

禁用场景重新加载后,该过程花费的时间更少。这使您可以更快地迭代项目的开发。Unity 不会从磁盘重新加载场景3D场景,而只会重置场景的修改内容。这避免了卸载和重新加载场景的时间和性能影响。Unity 仍将调用相同的初始化函数(例如 OnEnable、OnDisable 和 OnDestroy),就像首次加载它们时一样。

跳过场景重载效果

要禁用场景重新加载:

1.转到编辑器>编辑>项目设置

2.确保已启用进入播放模式选项。

3.禁用重新加载场景

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

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

未序列化到构建中的 ScriptableObject 和 MonoBehavior 字段([非序列化]'、私有或内部)保留其值。这是因为 Unity 不会重新创建现有对象,也不会调用构造函数。此外,在域重新加载期间,Unity 会将类型为 array/List 的空私有和内部字段转换为空数组/List 对象,为运行时(非编辑器)脚本保留非空字段。

使用 ExecuteInEditMode 或 ExecuteAlways 脚本的脚本不会收到 OnDestroy 或 Awake 调用。Unity 不会调用 Awakeunity 加载场景,并且仅在使用 Awake/OnEnable 方法更改运行模式时 EditorApplication.isPlaying 为真时才调用 OnEnable 方法(检查 EditorApplication.isPlay 属性)。运行时(非编辑器)脚本的非序列化字段应该不是问题,因为它们在编辑模式下不处于活动状态,但标记为 ExecuteInEditMode 或 ExecuteAlways 的脚本可能会自行更改字段或影响其他运行时脚本。若要解决此问题,请在 OnEnable 回调中自行初始化所有受影响的字段。