Unity3D:安全模式
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
安全模式
概述
Unity 的安全模式是 Unity 编辑器在打开出现脚本编译错误的项目时可以进入的一种模式。安全模式旨在为解决编译错误提供最佳环境,以便您可以快速将项目返回到功能状态。
在安全模式下,Unity 提供最小版本的编辑器用户界面,但功能有限。它仅导入与脚本相关的资源,并阻止导入非脚本资源(例如模型、材质、纹理和预制件)。这是因为安全模式不适用于内容制作,仅用于解决编译错误。
安全模式从不允许从项目或其包运行托管代码。这意味着你自己的脚本
例如编辑器脚本、资产后处理器和脚本化导入程序不会运行。安全模式还会禁用程序集覆盖以及突发和 Roslyn 分析器。这可确保处于安全模式的编辑器始终功能齐全且可靠,即使它打开处于非常损坏状态的项目也是如此。
Unity 在检测到不再有编译错误时会自动退出安全模式。当它退出安全模式时,Unity 会完全导入您的项目,编辑器会恢复其正常的完整功能。
编译错误的常见原因
在以下情况下,可能会出现一些可能导致您遇到编译错误的常见情况:
- 将项目从较旧版本的 Unity 升级到较新版本。
- 在与创建项目的 Unity 版本不同的 Unity 版本中打开项目。
- 打开缺少的项目包
或包的版本不正确。 - 打开一个在您自己的脚本中存在错误的项目。
- 在下打开一个项目版本控制
,其中您拉取的最新更改包含编译错误。
在没有安全模式的情况下打开具有编译错误的项目可能会导致多种问题。例如包
在项目中可能无法正确加载或运行,并且资源导入不正确,从而导致库中或库中的缓存工件不正确缓存服务器
.
在这些情况下,您通常不希望等待项目的其余部分导入后才能解决错误。安全模式为您提供了自行解决这些脚本相关问题的工具,或使用版本控制将项目更新到解决错误的较新版本,而无需等待项目的完全导入。
进入安全模式
当您打开有编译错误的项目时,编辑器会显示一个对话框,询问您是否要进入安全模式:

此时,您有三种选择:
- 进入安全模式
- 忽略错误并打开项目
- 退出统一
在大多数情况下,应选择“进入安全模式”来解决项目中的错误(或者,如果使用版本控制,则应提取包含错误修复的更改)。安全模式提供了解决编译错误的最佳环境,以便您可以在 Unity 导入项目的其余部分之前快速将项目恢复到功能状态。
但是,在某些情况下,您可能不希望进入安全模式,在这种情况下,您可以退出 Unity 或忽略错误。
注意:您可以在“常规”>“常规”>“>”“显示进入安全模式”对话框中禁用此对话框。如果禁用该对话框,Unity 会在打开出现编译错误的项目时自动进入安全模式。
退出而不进入安全模式
安全模式专为修复编译错误而设计。如果您作为团队的一员处理 Unity 项目,但不对导致错误的脚本负责,并且不知道该怎么做,则应在对话框中选择“退出”,并联系团队中的程序员寻求建议。
忽略错误并继续导入
在某些情况下,您不需要项目处于可用状态(例如,如果您打开旧项目以复制某些部件,或者只是检查其配置方式)。在这种情况下,您可以忽略错误并以损坏状态打开项目。
如果选择“忽略”,并且稍后想要在安全模式下打开项目,则可以关闭并重新打开 Unity 以再次访问“进入安全模式”对话框。
忽略编译错误的含义
如果您选择忽略这些错误,Unity 将继续导入其余资源并完全打开您的项目。这里的潜在影响包括:
- 您的项目可能未处于可用状态。在解决错误之前,您可能无法进入运行模式或创建项目生成。此外,项目中的任何包可能无法正确加载,或者根本无法加载。
- Unity 可能需要导入您的资源两次;一次是在启动时,一次是在解决项目的编译错误后。这会增加将项目加载到可用状态所需的时间。
- 如果项目使用可编程渲染管线,则渲染器可能无法加载,从而导致视觉问题,例如粉红色/洋红色“破碎”着色
“的效果。 - 脚本编译错误可能会导致项目中出现辅助错误。例如,如果项目中的脚本导入器由于编译错误而无法加载,则资源导入的状态可能不正确。
安全模式旨在帮助您避免所有这些问题。
安全模式下的编辑器
在安全模式下,Unity 提供了一个功能有限的最小编辑器界面。

Unity 编辑器在工具栏
部分,替换标准编辑器工具栏。工具栏指示您处于安全模式,并提供退出安全模式按钮,允许您忽略剩余错误并退出安全模式。横幅还指示您的项目是否使用预览包
.
Unity 编辑器在安全模式下保留其与代码编辑器的集成,因此您可以双击脚本资源或控制台错误以打开其关联的脚本,还可以通过“资源”菜单打开 C# 项目。它还保留了与版本控制系统的集成。
安全模式下的受限窗口集
编辑器在安全模式下显示有限的窗口选择。这些是:
- “控制台”窗口
- “项目”窗口
- 这检查员
窗 - “包管理器”窗口
这些是唯一可用的窗口,因为它们与修复编译错误有关。在安全模式下没有其他窗口可用。
安全模式下的编辑器菜单
在安全模式下,编辑器主菜单中的可用选项仅限于有限的一组。您只能查看和选择与使用脚本相关的菜单选项;用于创建和处理其他内容的常规选项不可用。例如,您无法创建或打开场景
,或创建非脚本资源,例如基元形状、灯光或相机
.这游戏对象
和组件菜单不存在,并且窗口菜单仅提供一组受限的窗口。

安全模式下的“项目”窗口
在安全模式下,项目窗口
与安全模式之外的正常行为相比,具有一些功能差异。
主要区别在于您只能选择与编译相关的资产。其他资产类型不可选择。它们在“项目”窗口中仍显示为灰色条目,但您无法选择或编辑它们。
具体而言,您可以与之交互的与编译相关的资产类型包括:
- C# 文件(.cs)
- DLL 文件(.dll)
- 程序集定义(.asm)
- 响应文件(.rsp)
- 规则集文件(.ruleset)
此外,不可选择资产的图标不显示资产内容的预览。相反,它们会显示一个通用图标来表示资产的类型。

创建 (+) 菜单按钮已停用,而“项目”窗口上下文菜单的可用选项集已减少。

退出安全模式
解决所有编译错误后,Unity 会自动退出安全模式。然后,Unity 会继续打开您的项目并导入您的资源。
若要在仍有编译错误的情况下退出安全模式,请选择“安全模式”工具栏中的“退出安全模式”按钮。不建议这样做(请参阅忽略编译错误的含义),Unity 会通过对话框提示您确认您的决定。

如果在项目中保留错误时退出安全模式,并且稍后想要返回到安全模式,则可以关闭并重新打开 Unity 以再次访问“进入安全模式”对话框。
批处理模式下的安全模式
在批处理模式下,如果项目中存在编译错误,Unity 会自动退出,除非您使用命令行参数。-ignoreCompilerErrors
此文由3D建模学习工作室整理翻译,转载请注明出处!