翻译Unity中文版的初衷是因为官方提供的中文版存在缺陷,而且翻译的不全。现在基于Unity2023.2版本对官方文档进行翻译。
未使用的覆盖 🔗
如果覆盖的目标对象无效或其属性路径未知,那么实例覆盖值将作为数据存储在定义它们的场景或预制中。然而,如果覆盖变得“未使用”,则数据变得无效。它仍然存储在场景文件中,但是冗余。
例如,如果您覆盖了附加到预制上的脚本的公共字段的值,然后删除了该脚本,包含覆盖值的数据将变得未使用,因为它的目标对象不再存在。
如果您删除公共字段定义或重命名公共字段,覆盖数据也会变得未使用,因为属性路径不再与存储的数据匹配,尽管组件对象本身仍然存在。
由于Unity不会自动删除未使用的覆盖数据,因此,如果您恢复了已删除的脚本或字段定义,覆盖数据将再次变为已使用状态,并像以前一样应用为覆盖。
如果您不想保留未使用的覆盖数据,可以使用Inspector中的Overrides菜单,或者在Hierarchy窗口中的上下文菜单中检查并删除它们。删除会包括所有未使用的覆盖,Unity将删除的详细信息写入编辑器日志中。
Unity编辑器无法自动确定何时以及是否应清理未使用的数据,因为您可能会暂时或意外地移动数据引用的对象或属性,并且您可能稍后重新启用它。删除您知道不再需要的未使用覆盖数据可以被视为良好的做法,因为这意味着您的场景文件只包含有用的数据,这可以帮助简化版本控制和协作。
注意:您可以通过使用FormerlySerializedAsAttribute来重命名公共字段,并保留关联的覆盖值,该属性执行名称转换,将字段的旧名称映射到其新名称。
Prefab覆盖选项 🔗
要检查并使用Inspector删除未使用的覆盖,请按照以下步骤操作:
- 选择您要处理的GameObject(s)。
- 在Inspector中,单击Overrides下拉菜单**[A]。如果存在任何未使用的覆盖,则菜单将显示“未使用的覆盖”选项[B]**,否则不会显示“未使用的覆盖”选项。
- 单击未使用的覆盖以打开未使用的覆盖面板。
- 未使用的覆盖面板**[C]列出了未使用的覆盖,并有一个Remove**按钮。
- 单击Remove按钮以删除未使用的覆盖。
未使用的覆盖面板,显示所选预置中的两个未使用的覆盖。
注意:未使用的覆盖面板支持多选,并显示未使用的覆盖的总数和受影响实例的数量,但只显示高达三个未使用覆盖的字段名称,GameObject名称和值,如下面的示例所示:
未使用的覆盖面板,显示3个不同预置实例上的24个未使用的覆盖。
Hierarchy上下文菜单 🔗
要在Hierarchy窗口中检查并删除未使用的实例覆盖,请按照以下步骤操作:
- 选择您要处理的GameObject(s)。
- 在Hierarchy窗口中,右键单击所选对象之一,然后选择Prefab > Remove Unused Overrides。
- Unity将显示一个对话框,显示未使用的覆盖数量(如果有)。
- 单击Remove按钮以删除未使用的覆盖。
从Hierarchy窗口上下文菜单中删除未使用覆盖时显示的对话框。
注意:您可以通过右键单击层级结构中的场景名称而不是单独的GameObject来删除整个场景中的所有未使用的覆盖。
结论 🔗
搬砖愉快!