文档

Unity 引擎

Unity 引擎

Safe模式

了解 Unity 的Safe模式,如果Project中存在编译错误,Unity Editor 会进入该模式。
阅读时间11 分钟最后更新于 3 天前

概览

Unity 的Safe模式是指WOpennO脚本编译本编译Projectject Unity Editor 可以进入的模式。Safe模式旨在提供解决编译错误的最佳Environment,以便可以快速将Project返回到正常运行状态。
在 Safe 模式下,Unity 提供 Editor 用户界面的最低版本,功能有限。它仅导入与脚本相关的 Assets,并防止导入非脚本 Assets(例如模型、Materials、Textures 和预制件)。这是因为 Safe 模式不适用于内容制作,仅用于解决编译错误。
Safe模式绝不允许Managed代码从Project或其包中运行。这意味着您自己的脚本(如 Editor 脚本、资源 POST 处理器和脚本导入器)无法运行。Safe 模式还禁用程序集覆盖以及爆发和罗斯林分析器。这样可确保 Safe 模式下的 Editor 始终完整可靠,即使当它以非常中断的状态打开项目时也是如此。
Unity 检测到不再有编译错误When,会自动退出Safe模式。退出Safe模式When,Unity 会完整导入Project,而 Editor 会恢复其法线的完整功能。

编译错误的常见原因

以下情况When可能会出现一些可能result编译错误的常见情况:
  • 将Project从旧版本的 Unity 升级到更高版本。
  • 使用与创建项目的版本不同的 Unity 版本OpenProject。
  • 打开缺少包或包版本不正确的项目。
  • Open 您自己的脚本中有错误的 Project。
  • 在版本控制下打开一个项目,其中您拉取的最新更改包含编译错误。
在没有 Safe 模式的情况下打开存在编译错误的 Project 可能会导致多种问题。例如,Project 中的包可能无法正确加载或函数,Assets 的导入可能不正确,导致库或缓存服务器中的缓存瑕疵不正确。
在这些情况下,您通常不希望等待Project的REST部分导入后才能解决错误。Safe 模式为您提供了工具,可自行解决这些脚本相关问题,或使用版本控制将项目更新到可解决错误的更高版本,而无需等待项目的完整导入。

进入Safe模式

Open存在编译错误的ProjectWhen,Editor 会显示一个对话框,询问是否要进入Safe模式:

The Enter Safe Mode? dialog prompts you to enter Safe Mode when you open a project with compilation errors

在这点上有三个选择:
  • 进入 Safe 模式
  • 忽略错误并打开 Project
  • 退出 Unity
在大多数情况下,您应该选择 进入 Safe 模式 来解决 Project 中的错误(或者,如果您使用版本控制,可以拉取包含错误修复的更改)。Safe模式为解决编译错误提供了最佳Environment,因此您可以在 Unity 导入Project的REST部分之前快速将Project返回到正常运行状态。
但是,在某些情况下,您可能不想进入 Safe 模式,在这种情况下,您可以退出 Unity,或忽略错误。
注意
您可以在 编辑 > 偏好 > 资源 管道 > Show 进入 Safe 模式 Dialog 中禁用用此对话框。如果禁用对话框,Unity 会在打开出现编译错误的ProjectWhen自动进入Safe模式。

退出而不进入 Safe 模式

Safe 模式专门用于修复编译错误。如果您作为 Team 的一部分处理 Unity Project,但您不负责导致错误的脚本,并且不知道该怎么办,则应在对话框中选择 **Quit **,并联系 ON Team 的工程师以寻求建议。

忽略错误并继续导入

在某些情况下,不需要Project处于可用状态(例如,如果要打开旧Project以复制某些部分,或只是检查其Configured)。在这种情况下,无论如何都可以忽略错误并以中断状态OpenProject。
如果选择 Ignore,然后想以 Safe 模式打开项目,可以关闭并重新 Open Unity 以再次访问“进入 Safe 模式”对话框。

忽略编译错误的影响

如果选择忽略错误,Unity 将继续导入 REST Assets 并完全打开 Project。此处的潜在影响包括:
  • 您的 Project 可能未处于可用状态。在解决错误之前,可能无法进入播放模式或创建Project的构建版本。此外,Project中的Any包可能无法正确加载,或者All无法加载。
  • Unity 可能需要导入两次Assets:一次在启动时,另一次在解决Project的编译错误后。这会增加以可用状态加载项目所需的时间量。
  • 如果 Project 使用可可编程渲染管线,则渲染管线可能无法加载,从而导致报错着色器等视觉问题。
  • 脚本编译错误可能导致 Project 中的次要错误。例如,如果由于编译错误而无法加载 Project 中的 Scripted Importer,则 Assets 可能以不正确的状态导入。
Safe模式旨在帮助您避免All这些问题。

Safe 模式下的 Editor

在 Safe 模式下,Unity 提供了具有有限功能的最小 Editor 接口。

The Unity Editor in Safe Mode

Unity Editor 在 Editor 顶部工具栏栏部分显示一个Safe模式横幅,取代了标准 Editor 工工具栏。工具栏指示处于 Safe 模式,并提供 Exit Safe Mode 按钮,可忽略剩余的错误并退出 Safe 模式。横幅还指示 Project 是否使用预览包。
Unity Editor 在 Safe 模式下保持与代码编辑器的集成,因此您可以双击 ON 脚本 Assets 或控制台报错的脚本来 Open 其关联脚本,并可通过 Assets 菜单 Open C# Project。它还保持与版本控制系统的集成。

Safe 模式下的受限 Windows 设置

Editor 在 Safe 模式下显示有限的 Windows 选择。它们是:
  • 控制台窗口
  • 项目窗口
  • Inspector 窗口
  • 在“Package Manager(包管理器)”窗口中,执行以下操作:
这些是唯一可用的 Windows,因为它们与修复编译错误相关。在Safe模式下没有OtherWindows可用。

Safe 模式下的 Editor 菜单

在Safe模式下,Editor菜单单中的可用选项仅限于一设置。只能查看和选择与使用脚本相关的菜单选项;用于创建和使用Other内容的常规选项不可用。例如,无法创建或 Open 场景,或创建原始形状、光线或相机等非脚本 Assets。
GameObject

?

和组件菜单不存在,Window 菜单仅提供有限的 Windows 设置。

The restricted Editor Menu as it appears in Safe Mode, displaying the available options for creating assets.

Safe 模式下的项目窗口

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

The Project window displays generic icons for non-selectable assets.

创建 (+) 菜单按钮已禁用,项目窗口上下文菜单的可用选项设置有所减少。

The create (+) menu button in the project window, disabled in Safe Mode

退出Safe模式

解决All编译错误When,Unity 会自动退出Safe模式。然后,Unity 继续OpenProject并导入Assets。
要在仍然存在编译错误时退出 Safe 模式,请选择 Safe 模式工具栏中的 Exit Safe Mode 按钮。不建议这样做(请参阅忽略编译错误的影响),Unity 会通过对话框提示您确认您的 Decision。

The Exit Safe Mode button in the Safe Mode toolbar

如果退出 Safe 模式时项目中仍然存在错误,但稍后希望返回 Safe 模式,则可以关闭并重新 Open Unity 以再次访问“进入 Safe 模式”对话框。

批次模式下的 Safe 模式

在批次模式下,如果 Project 中存在编译错误,Unity 会自动退出,除非使用
-ignoreCompilerErrors
命令行参数。