陈巧倩

Unity中文版-Create Gameplay Prefabs Instance overrides(自翻译)

· 27 words · 1 minutes to read
Categories: Unity
Tags: Document

翻译Unity中文版的初衷是因为官方提供的中文版存在缺陷,而且翻译的不全。现在基于Unity2023.2版本对官方文档进行翻译。

实例覆盖 🔗

实例覆盖允许您在预制件实例之间创建变化,同时仍将这些实例链接到相同的预制件资源。

当您修改预制件资源时,所有实例中都会反映这些更改。但是,您还可以直接对单个实例进行修改。这将在该特定实例上创建一个实例覆盖

例如,如果您有一个名为“机器人”的预制件资源,并将其放置在游戏的多个关卡中。但是,“机器人”的每个实例都具有不同的速度值和不同的音频剪辑。

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

  • 覆盖属性的值
  • 添加组件
  • 移除组件
  • 添加子游戏对象

预制件实例有一些限制:您无法更改作为预制件一部分的游戏对象的父对象,并且无法移除预制件中的游戏对象。但是,您可以将游戏对象停用,这是移除游戏对象的良好替代方法(这将被视为属性覆盖)。

检视面板中,实例覆盖以加粗的方式显示其名称标签,并在左侧边距中显示蓝色线条。当您为预制件实例添加新组件时,边距中的蓝色线会覆盖整个组件。

检视面板显示具有覆盖的“Is Trigger”属性和作为覆盖添加的刚体组件的预制件实例。

在检视面板中,添加和删除的组件图标上还会带有加号和减号徽章,添加的游戏对象在层级视图中的图标上会有一个加号徽章。

在层级视图中,具有覆盖或非默认值的预制件实例具有覆盖指示器,以显示它们已被编辑,Unity会在左侧边距显示与检视面板中实例覆盖的线条相同的蓝色线。有关详细信息,请参阅层级视图。

层级视图显示作为覆盖添加的子游戏对象“GermOBlaster”的预制件实例。

覆盖具有优先级 🔗

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

如果对预制件资源进行更改后,未按预期更新所有实例,则应检查该属性是否在实例上进行了覆盖。最好只在必要时使用实例覆盖,因为如果在整个项目中存在大量的实例覆盖,很难确定对预制件资源的更改是否会对所有实例产生影响。

对齐方式是特定于预制件实例的 🔗

预制件实例的对齐方式是一个特殊情况,并且与其他属性处理方式不同。对齐方式的值从预制件资源不会传递到预制件实例。这意味着,即使与预制件资源的对齐方式不同,预制件实例的对齐方式始终可以不做为显式实例覆盖。具体而言,对齐方式指的是预制件实例的根节点上的位置旋转属性,并且对于一个矩形变换也包括宽度高度边距锚点中心点属性。

这是因为几乎不可能要求多个预制实例具有相同的位置和旋转。更常见的情况是,您希望预制件实例具有不同的位置和旋转,因此Unity不会将这些视为预制件覆盖。

未使用的覆盖 🔗

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

结论 🔗

搬砖愉快!