翻译Unity中文版的初衷是因为官方提供的中文版存在缺陷,而且翻译的不全。现在基于Unity2023.2版本对官方文档进行翻译。
多级覆盖 🔗
当您在其他Prefab内部使用Prefab,或者使用Prefab变体时,覆盖可以存在于多个级别,并且相同的覆盖可以应用于多个不同的Prefab。
应用目标的选择 🔗
当您有一个内部包含嵌套Prefab的Prefab实例,或者是一个Prefab变体时,您可能可以选择应用覆盖的Prefab。
考虑一个嵌套在Prefab“Table”中的Prefab“Vase”,并且场景中有一个“Table”Prefab的实例。
如果在此实例上覆盖“Vase”的属性,那么这个覆盖可以应用于多个Prefab:即“Vase”或“Table”。
Overrides下拉菜单中的Apply All按钮只允许将覆盖应用于外部Prefab - 在这种情况下是“Table”。但是,在通过上下文菜单或通过Overrides下拉窗口中各个组件的比较视图进行应用时,可以选择应用目标。
在这个例子中,如果选择Apply to Prefab ‘Vase’,该值将应用于“Vase” Prefab资产,并用于所有“Vase” Prefab的实例。
而且,如果选择Apply as Override in Prefab ‘Table’,该值将成为“Table” Prefab内部的“Vase”实例上的一个覆盖。该属性在场景中的实例上不再标记为覆盖,但如果您在Prefab模式中打开“Table” Prefab,则在“Vase” Prefab实例上标记为覆盖。
“Vase” Prefab Asset本身不受在“Table” Prefab Asset内作为覆盖应用的影响。这意味着所有“Table” Prefab的实例现在都有其“Vase” Prefab实例上的新值,但是不属于“Table” Prefab的其他“Vase” Prefab实例不受影响。
如果“Vase” Prefab本身的属性稍后更改,它将影响所有“Vase” Prefab的实例,除非该属性被覆盖。因为它在“Table” Prefab内部的“Vase”实例上被覆盖了,所以这个变化不会影响任何属于“Table”实例的“Vase”实例。
对内部Prefab的应用可能会影响外部Prefab 🔗
应用一个或多个属性到内部Prefab Asset中有时会修改外部Prefab Asset,因为这些属性会在外部Prefab中被恢复为覆盖。
在我们的例子中,如果选择Apply to Prefab ‘Vase’,并且“Table” Prefab对该值有一个覆盖,那么“Table” Prefab中的这个覆盖将同时被恢复,以便实例上的属性保持刚刚应用的值。如果不是这种情况,实例上的值将在应用后立即改变。
结论 🔗
搬砖愉快!