版本:Unity 6 (6000.0)
语言:英语
在预制模式下编辑预制件
通过其实例编辑预制件

实例覆盖

实例覆盖允许您在预制件一种资产类型,允许您存储包含组件和属性的游戏对象。预制件充当模板,您可以从模板中在场景中创建新的对象实例。 更多信息
参见 术语表
实例之间创建差异,同时仍然将这些实例链接到同一个预制件资产。

当您修改预制件资产时,更改会反映到其所有实例中。但是,您也可以直接对单个实例进行修改。这样做会在该特定实例上创建一个实例覆盖

例如,您有一个名为“Robot”的预制件资产,您将其放置在游戏中的多个关卡中。但是,“Robot”的每个实例都有不同的速度值,以及不同的音频剪辑Unity 中用于存储音频数据的容器。Unity 支持单声道、立体声和多声道音频资产(最多八个通道)。Unity 可以导入 .aif、.wav、.mp3 和 .ogg 音频文件格式,以及 .xm、.mod、.it 和 .s3m 跟踪模块格式。 更多信息
参见 术语表
分配。

有四种不同类型的实例覆盖

  • 覆盖属性的值

  • 添加组件

  • 删除组件

  • 添加子游戏对象

预制件实例有一些限制:您不能重新定位作为预制件一部分的游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、摄像机、航点等。游戏对象的功能由附加到它的组件定义。 更多信息
参见 术语表
,也不能删除作为预制件一部分的游戏对象。但是,您可以停用游戏对象,这是删除游戏对象的良好替代方案(这算作属性覆盖)。

检视器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。 更多信息
参见 术语表
窗口中,实例覆盖以粗体显示其名称标签,并在左侧边距中显示一条蓝色线条。当您向预制件实例添加新组件时,边距中的蓝色线条会跨越整个组件。

The inspector windows showing a Prefab instance with overridden Is Trigger property and a Rigidbody component added as an override.
检视器窗口显示具有覆盖的“Is Trigger”属性和作为覆盖添加的 Rigidbody 组件的预制件实例。

添加和删除的组件在其检视器图标上也有加号和减号徽章,添加的游戏对象在其层次结构图标上也有加号徽章。

在层次结构窗口中,具有覆盖或非默认值的预制件实例具有覆盖指示器,以显示它们已被编辑,Unity 使用左侧边距中的蓝色线条显示,与检视器窗口中实例覆盖的线条外观相同。有关更多信息,请参阅 层次结构

The Hierarchy window showing a Prefab instance with a child GameObject called GermOBlaster added as an override.
层次结构窗口显示具有名为“GermOBlaster”的子游戏对象作为覆盖添加的预制件实例。

覆盖优先

预制件实例上覆盖的属性值始终优先于预制件资产中的值。这意味着,如果您更改预制件资产上的属性,它不会对该属性被覆盖的实例产生任何影响。

如果您对预制件资产进行更改,但它没有按预期更新所有实例,则应检查该属性是否在实例上被覆盖。最好仅在严格必要时使用实例覆盖,因为如果您在整个项目中有很多实例覆盖,可能难以判断对预制件资产的更改是否会对所有实例产生影响。

对齐特定于预制件实例

预制件实例的对齐是一个特殊情况,处理方式与其他属性不同。对齐值永远不会从预制件资产传递到预制件实例。这意味着它们始终可以与预制件资产的对齐方式不同,而不会成为显式实例覆盖。具体来说,对齐方式是指预制件实例的根变换变换层次结构顶部的变换。在预制件中,根变换是预制件中最高级的变换。在动画人形角色中,根变换是身体变换在 Y 平面上的投影,并在运行时计算。在每一帧,都会计算根变换的更改,然后将其应用于游戏对象以使其移动。 更多信息
参见 术语表
上的位置旋转属性,对于矩形变换,这也包括宽度高度边距锚点一种 UI 布局工具,将 UI 元素固定到父元素。锚点在场景视图中显示为四个小的三角形手柄,锚点信息也在检视器中显示。 更多信息
参见 术语表
枢轴属性。

这是因为很少需要预制件的多个实例采用相同的位置和旋转。更常见的是,您希望预制件实例位于不同的位置和旋转,因此 Unity 不将这些视为预制件覆盖。

未使用的覆盖

如果声明实例覆盖的脚本被修改或删除,表示实例覆盖值的​​数据可能会变得未使用。如果发生这种情况,您可以删除未使用的覆盖数据

在预制模式下编辑预制件
通过其实例编辑预制件