Version: 2021.1
预制件变体
解压缩预制件实例

覆盖多个级别

在其他预制件中使用预制件或使用预制件变体时,覆盖可存在于多个级别,且相同的覆盖可应用于多个不同的预制件。

选择应用目标

当一个预制件实例的内部有嵌套的预制件或者是预制件变体时,可以选择应该将覆盖应用于哪个预制件。

假设一个预制件“Vase”嵌套在预制件“Table”中的,而且场景包含“Table”预制件的一个实例。

Table预制件中嵌套了Vase预制件。
“Table”预制件中嵌套了“Vase”预制件。

在此实例上,如果“Vase”上的属性被覆盖,则可以将此覆盖应用于多个预制件:“Vase”或“Table”。

Overrides 下拉窗口中的 Apply All 按钮仅允许将覆盖应用于外层预制件:在本例中为“Table”。但是,通过上下文菜单或通过 Overrides 下拉窗口中各个组件的比较视图应用覆盖时,可以选择应用目标。

在此示例中,如果选择 Apply to Prefab ‘Vase’,该值将应用于“Vase”预制件资源,并用于“Vase”预制件的所有实例。

另外,如果在选择 Apply as Override in Prefab ‘Table’,该值将成为“Table”预制件内的“Vase”实例上的覆盖。该属性不再标记为场景内实例上的覆盖,但如果在预制件模式下打开“Table”预制件,则“Vase”预制件实例上的属性将在此处标记为覆盖。

覆盖为“Table”预制件资源中的覆盖时,“Vase”预制件资源本身完全不受影响。这意味着“Table”预制件的所有实例现在都在其“Vase”预制件实例上具有新值,但不属于“Table”预制件的其他“Vase”预制件实例不受影响。

如果“Vase”预制件本身的属性稍后改变,此更改将影响“Vase”预制件的所有实例,但该属性被覆盖的实例除外。由于属性在“Table”预制件内的“Vase”实例上被覆盖,因此更改不会影响属于“Table”实例的任何“Vase”实例。

应用于内层预制件也可能会影响外层预制件

将一个或多个属性应用于内层预制件资源有时也可能修改外层预制件资源,因为这些属性会在外层预制件中恢复其覆盖。

在我们的示例中,如果选择 __Apply to Prefab ‘Vase’__,且“Table”预制件具有该值的覆盖,则“Table”预制件中的此覆盖将同时恢复,使实例上的属性保留刚应用的值。如果不是这种情况,则实例上的值将在应用后立即更改。


  • 2018–07–31 页面已发布

  • 在 2018.3 版中添加了嵌套预制件和预制件变体

预制件变体
解压缩预制件实例
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961