版本:Unity 6 (6000.0)
语言 : 英语
多级覆盖
解包预制件实例

未使用的覆盖

实例覆盖值以数据形式存储在 场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是在分段设计和构建游戏。 更多信息
参见 术语表
预制件一种资产类型,允许您存储带有组件和属性的完整游戏对象。预制件充当模板,您可以从中在场景中创建新的对象实例。 更多信息
参见 术语表
中定义它们的位置。但是,如果覆盖的目标对象无效,或者其 属性路径 未知,则覆盖将变为“未使用”。在这种情况下,数据变为未使用。它仍然存储在场景文件中,但冗余。

例如,如果您覆盖附加到预制件的 脚本公共字段 的值,然后删除脚本,则包含覆盖值的数据将变为未使用,因为它针对不再存在的对象。

如果您删除公共字段定义,或对其重命名,则覆盖数据也将变为未使用,因为 属性路径 不再与存储的数据匹配,尽管组件对象本身仍然存在。

由于 Unity 不会自动删除未使用的覆盖数据,因此,如果您还原已删除的脚本,或字段定义,则覆盖数据将再次变为使用,并像以前一样应用为覆盖。

如果您不想保留未使用的覆盖数据,可以使用 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。 更多信息
参见 术语表
中的 覆盖 菜单,或从 层次结构 窗口中的上下文菜单中检查并删除它们。删除包括所有未使用的覆盖,Unity 将删除内容的详细信息写入 编辑器日志

Unity 编辑器无法自动确定何时或是否应清理未使用的数据,因为您可能暂时或意外地移动了数据引用的对象或属性,并且您可能稍后将其恢复。删除您知道不再需要的未使用的覆盖数据可以被认为是最佳实践,因为它意味着您的场景文件只包含有用的数据,这有助于使 版本控制一个管理文件更改的系统。您可以将 Unity 与大多数常见的版本控制工具结合使用,包括 Perforce、Git、Mercurial 和 PlasticSCM。 更多信息
参见 术语表
和协作更简单。

注意:您可以使用 FormerlySerializedAsAttribute 重命名公共字段并保留相关覆盖的值,该属性执行名称转换以将字段的旧名称映射到其新名称。

预制件覆盖下拉菜单

使用检查器检查并删除未使用的覆盖

  1. 选择您要处理的游戏对象。
  2. 在检查器中,单击 覆盖 下拉菜单 [A]。如果有任何未使用的覆盖存在,则菜单将显示“未使用的覆盖”选项 [B],否则不会显示“未使用的覆盖”选项。
  3. 单击 未使用的覆盖 以打开未使用的覆盖面板。
  4. 未使用的覆盖面板 [C] 列出了未使用的覆盖,并有一个 删除 按钮。
  5. 单击 删除 按钮以删除未使用的覆盖。
The unused overrides panel, showing two unused overrides on the selected prefab.
未使用的覆盖面板,显示选定预制件上的两个未使用的覆盖。

注意:未使用的覆盖面板支持多选,并显示未使用的覆盖的总数,以及受影响的实例数量,但它只显示字段名称、游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、相机、路点等等。游戏对象的函数通过附加到它的组件来定义。 更多信息
参见 术语表
名称和值,最多三个未使用的覆盖,如下例所示

The unused overrides panel, showing 24 unused overrides on 3 separate prefab instances.
未使用的覆盖面板,显示 3 个独立的预制件实例上的 24 个未使用的覆盖。

层次结构上下文菜单

从层次结构窗口检查并删除未使用的实例覆盖

  1. 选择您要处理的游戏对象。
  2. 在层次结构窗口中,右键单击选定对象之一,然后选择:预制件 > 删除未使用的覆盖
  3. Unity 将显示一个对话框,显示未使用的覆盖数量(如果有)。
  4. 单击 删除 按钮以删除未使用的覆盖。
The dialog box shown when removing unused overrides from the Hierarchy window context menu.
从层次结构窗口上下文菜单中删除未使用的覆盖时显示的对话框。

注意:您可以通过右键单击层次结构中场景的名称而不是单个游戏对象来删除整个场景中的所有未使用覆盖。

多级覆盖
解包预制件实例