版本:Unity 6 (6000.0)
语言:English
智能合并
命令行参数

安全模式

概述

Unity 的安全模式是在您打开存在脚本编译错误的项目时,Unity 编辑器可以进入的一种模式。安全模式旨在提供最佳的环境来解决编译错误,以便您可以快速将项目恢复到可运行状态。

在安全模式下,Unity 提供了编辑器用户界面的精简版本,功能有限。它仅导入与脚本相关的资源,并阻止导入非脚本资源(例如模型、材质、纹理和预制体)。这是因为安全模式并非用于内容制作,仅用于解决编译错误。

安全模式绝不允许从您的项目或其包中运行托管代码。这意味着您自己的脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间推移修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
参见 术语表
(例如 编辑器脚本资源后处理器脚本化导入器)不会运行。安全模式还会禁用 程序集覆盖 以及 BurstRoslyn 分析器。这确保了安全模式下的编辑器始终功能完备且可靠,即使它打开处于严重损坏状态的项目也是如此。

当 Unity 检测到不再存在编译错误时,它会自动退出安全模式。退出安全模式后,Unity 会完整导入您的项目,并且编辑器会恢复其正常的全部功能。

编译错误的常见原因

当您遇到以下情况时,可能会导致遇到编译错误:

  • 将项目从旧版 Unity 升级到新版本。
  • 在与创建项目时不同的 Unity 版本中打开项目。
  • 打开缺少一个存储各种类型 Unity 功能和资源的容器,包括编辑器或运行时工具和库、资源集合以及项目模板。包是自包含的单元,Unity 包管理器可以在 Unity 项目之间共享。大多数情况下,这些称为,但偶尔也称为Unity 包管理器 (UPM) 包更多信息
    参见 术语表
    或包版本不正确的项目。
  • 打开您自己的脚本中存在错误的项目。
  • 版本控制一个用于管理文件更改的系统。您可以将 Unity 与大多数常见的版本控制工具结合使用,包括 Perforce、Git、Mercurial 和 PlasticSCM。 更多信息
    参见 术语表
    下打开一个项目,其中您拉取的最新更改包含编译错误。

在没有安全模式的情况下打开存在编译错误的项目可能会导致多种问题。例如,项目中的包是用于在 Unity 中共享和重复使用的资源集合。 Unity 包管理器 (UPM) 可以显示、添加和删除项目中的包。这些包是 Unity 包管理器的原生包,并提供了一种提供 Unity 功能的基本方法。但是,Unity 包管理器还可以显示您从资源商店下载的 资源商店包更多信息
参见 术语表
可能无法正确加载或运行,并且您的资源可能被错误地导入,从而导致您的 Library缓存服务器 中出现错误的缓存工件。

在这些情况下,您通常不希望在解决错误之前等待项目的其余部分导入。安全模式为您提供了自行解决这些与脚本相关的问题或使用版本控制将项目更新到解决错误的新版本的工具,而无需等待项目的完整导入。

进入安全模式

当您打开存在编译错误的项目时,编辑器会显示一个对话框,询问您是否要进入安全模式

The Enter Safe Mode? dialog prompts you to enter Safe Mode when you open a project with compilation errors
当您打开存在编译错误的项目时,“进入安全模式?”对话框会提示您进入安全模式

此时,您有三种选择

  • 进入安全模式
  • 忽略错误并打开您的项目
  • 退出 Unity

在大多数情况下,您应该选择进入安全模式来解决项目中的错误(或者,如果您使用版本控制,则拉取包含错误修复的更改)。安全模式为解决编译错误提供了最佳环境,以便您可以在 Unity 导入项目的其余部分之前快速将项目恢复到可运行状态。

但是,在某些情况下,您可能不希望进入安全模式,在这种情况下,您可以退出 Unity 或忽略错误。

注意您可以在编辑 > 首选项 > 资源管道 > 显示进入安全模式对话框中禁用此对话框。如果您禁用了此对话框,则 Unity 在打开存在编译错误的项目时会自动进入安全模式。

退出而不进入安全模式

安全模式专门用于修复编译错误。如果您作为团队成员参与 Unity 项目,但您不负责导致错误的脚本,也不知道该怎么做,则应在对话框中选择退出,并联系团队中的程序员寻求建议。

忽略错误并继续导入

在某些情况下,您不需要项目处于可使用状态(例如,如果您正在打开旧项目以复制某些部分或只是检查其配置方式)。在这种情况下,您可以忽略错误,并在项目处于损坏状态下打开它。

如果您选择忽略,并且稍后希望在安全模式下打开项目,您可以关闭并重新打开 Unity 以再次访问“进入安全模式”对话框。

忽略编译错误的影响

如果您选择忽略错误,Unity 将继续导入项目的其余资源并完全打开您的项目。这里可能产生的影响包括

  • 您的项目可能无法使用。在解决错误之前,您可能无法进入播放模式或创建项目的版本。此外,项目中的任何包都可能无法正确加载或根本无法加载。

  • Unity 可能需要导入两次资源;一次在启动时,另一次在解决项目的编译错误后。这会增加将项目加载到可用状态所需的时间。

  • 如果您的项目使用 可脚本化渲染管道,您的渲染管道一系列操作,获取场景的内容并在屏幕上显示。Unity 允许您从预构建的渲染管道中选择,或编写您自己的渲染管道。 更多信息
    参见 术语表
    可能无法加载,从而导致视觉问题,例如 错误着色器

  • 脚本编译错误可能会导致项目中出现次要错误。例如,如果项目中的 脚本化导入器 由于编译错误而无法加载,则您的资源可能会以不正确的状态导入。

安全模式旨在帮助您避免所有这些问题。

安全模式下的编辑器

在安全模式下,Unity 提供了一个功能有限的精简编辑器界面。

The Unity Editor in Safe Mode
安全模式下的 Unity 编辑器

Unity 编辑器在编辑器顶部的工具栏Unity 编辑器顶部的按钮和基本控件行,允许您以各种方式与编辑器交互(例如缩放、平移)。 更多信息
参见 术语表
部分显示安全模式横幅,该横幅替换了标准编辑器工具栏。工具栏指示您处于安全模式,并提供一个退出安全模式按钮,允许您忽略剩余的错误并退出安全模式。横幅还会指示您的项目是否使用预览包预览包正在开发中,尚未准备好投入生产。预览包可能处于开发的任何阶段,从初始阶段到接近完成。
参见 术语表

Unity 编辑器在安全模式下保留了其与代码编辑器的集成,因此您可以双击脚本资源或控制台错误s 以打开其关联的脚本,并且您可以通过资源菜单打开 C# 项目。它还保留了与版本控制系统的集成。

安全模式下受限的窗口集

编辑器在安全模式下显示有限的窗口选择。这些是

  • 控制台窗口
  • 项目窗口
  • 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资源或项目设置的信息,允许您检查和编辑值。 更多信息
    参见 术语表
    窗口
  • 包管理器窗口

这些是唯一可用的窗口,因为它们与修复编译错误相关。安全模式下不提供其他窗口。

安全模式下的编辑器菜单

在安全模式下,编辑器主菜单中可用的选项受到限制。您只能看到并选择与脚本相关的菜单选项;创建和处理其他内容的常规选项不可用。例如,您无法创建或打开场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是分段设计和构建您的游戏。 更多信息
参见 术语表
,或创建非脚本资源,例如基本形状、灯光或摄像机一个组件,用于创建场景中特定视点的图像。输出要么绘制到屏幕上,要么作为纹理捕获。 更多信息
参见 术语表
游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的功用由附加到其上的组件定义。 更多信息
参见 术语表
组件菜单不可用,并且 窗口菜单仅提供有限的窗口集。

The restricted Editor Menu as it appears in Safe Mode, displaying the available options for creating assets.
安全模式下显示的受限编辑器菜单,显示了可用于创建资源的选项。

安全模式下的项目窗口

在安全模式下,项目窗口显示您的 Assets 文件夹(项目选项卡)内容的窗口 更多信息
参见 术语表
与安全模式之外的正常行为相比,具有一些功能差异。

主要区别在于,您只能选择与编译相关的资源。其他资源类型不可选。它们在项目窗口中以灰色条目显示,但您无法选择或编辑它们。

具体来说,您可以与之交互的与编译相关的资源类型为

  • C# 文件 (.cs)
  • DLL 文件 (.dll)
  • 程序集定义 (.asm)
  • 响应文件 (.rsp)
  • 规则集文件 (.ruleset)

此外,不可选资源的图标不显示资源内容的预览。而是显示一个通用图标来表示资源的类型。

The Project window displays generic icons for non-selectable assets.
项目窗口显示不可选资源的通用图标。

创建 (+) 菜单按钮被禁用,并且项目窗口上下文菜单提供了一组减少的选项。

The create (+) menu button in the project window, disabled in Safe Mode
项目窗口中的创建 (+) 菜单按钮,在安全模式下被禁用

退出安全模式

当您解决所有编译错误时,Unity 会自动退出安全模式。然后,Unity 继续打开您的项目并导入您的资源。

要在仍存在编译错误时退出安全模式,请在安全模式工具栏中选择退出安全模式按钮。不建议这样做(请参阅忽略编译错误的影响),Unity 会提示您使用对话框确认您的决定。

The Exit Safe Mode button in the Safe Mode toolbar
安全模式工具栏中的退出安全模式按钮

如果您在项目中仍存在错误的情况下退出安全模式,并且稍后想要返回安全模式,您可以关闭并重新打开 Unity 以再次访问“进入安全模式”对话框。

批处理模式下的安全模式

在批处理模式下,如果您的项目中存在编译错误,Unity 会自动退出,除非您使用-ignoreCompilerErrors 命令行参数

智能合并
命令行参数