Version: Unity 6.0 (6000.0)
语言 : 中文
实例覆盖
解压缩预制件实例

未使用覆盖

实例覆盖值作为数据存储在定义它们的场景或预制件中。但是,如果覆盖的目标对象无效或其属性路径未知,则覆盖将变为“未使用”。在这种情况下,数据将变为未使用。数据仍然存储在场景文件中,但为冗余数据。

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

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

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

如果不想保留未使用覆盖数据,可使用检视面板中的 Overrides 菜单或从层级视图窗口中的上下文菜单中检查和删除这些数据。删除包括所有未使用覆盖,Unity 会将删除内容的详细信息写入编辑器日志

Unity 编辑器无法自动确定何时或是否应清理未使用数据,因为您可能临时或意外地移动了数据引用的对象或属性,稍后可能会将其恢复。删除您不再需要的未使用覆盖数据可视为一种良好做法,因为这意味着场景文件仅包含有用的数据,这有助于简化版本控制和协作。

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

预制件覆盖下拉选单

要使用检视面板检查和删除未使用覆盖,请执行以下操作:

  1. 选择要处理的游戏对象。
  2. 在检视面板中,单击 Overrides 下拉菜单 [A]。如果存在任何未使用覆盖,菜单将显示“未使用覆盖”选项 [B],否则不显示“未使用覆盖”选项。
  3. 单击未使用覆盖打开未使用覆盖面板。
  4. 未使用覆盖面板 [C] 列出了未使用覆盖,并有一个 Remove 按钮。
  5. 单击 Remove 按钮可删除未使用覆盖。
未使用覆盖面板,显示所选预制件上的两个未使用覆盖。
未使用覆盖面板,显示所选预制件上的两个未使用覆盖。

注意:未使用覆盖面板支持多重选择,并显示未使用覆盖的总数以及受影响的实例数,但仅显示最多三个未使用覆盖的字段名称、游戏对象名称和值,如下例所示:

未使用覆盖面板,显示 3 个单独预制件实例上 24 个未使用覆盖。
未使用覆盖面板,显示 3 个单独预制件实例上 24 个未使用覆盖。

层级视图上下文菜单

要在层级视图窗口中检查和删除未使用实例覆盖:

  1. 选择要处理的游戏对象。
  2. 在层级视图窗口中,右键单击所选对象之一,然后选择:Prefab > Remove Unused Overrides
  3. Unity 会显示一个对话框,其中显示未使用覆盖的数量(如果有)。
  4. 单击 Remove 按钮可删除未使用覆盖。
从层级视图窗口上下文菜单中移除未使用覆盖时显示的对话框。
从层级视图窗口上下文菜单中移除未使用覆盖时显示的对话框。

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

实例覆盖
解压缩预制件实例