預(yù)制件-覆蓋多個(gè)級別
在其他預(yù)制件中使用預(yù)制件或使用預(yù)制件變體時(shí),覆蓋可存在于多個(gè)級別,且相同的覆蓋可應(yīng)用于多個(gè)不同的預(yù)制件。
選擇應(yīng)用目標(biāo)
當(dāng)一個(gè)預(yù)制件實(shí)例的內(nèi)部有嵌套的預(yù)制件或者是預(yù)制件變體時(shí),可以選擇應(yīng)該將覆蓋應(yīng)用于哪個(gè)預(yù)制件。
假設(shè)一個(gè)預(yù)制件“Vase”嵌套在預(yù)制件“Table”中的,而且場景包含“Table”預(yù)制件的一個(gè)實(shí)例。

在此實(shí)例上,如果“Vase”上的屬性被覆蓋,則可以將此覆蓋應(yīng)用于多個(gè)預(yù)制件:“Vase”或“Table”。
Overrides 下拉窗口中的?Apply All?按鈕僅允許將覆蓋應(yīng)用于外層預(yù)制件:在本例中為“Table”。但是,通過上下文菜單或通過 Overrides 下拉窗口中各個(gè)組件的比較視圖應(yīng)用覆蓋時(shí),可以選擇應(yīng)用目標(biāo)。

在此示例中,如果選擇?Apply to Prefab ‘Vase’,該值將應(yīng)用于“Vase”預(yù)制件資源,并用于“Vase”預(yù)制件的所有實(shí)例。
另外,如果在選擇?Apply as Override in Prefab ‘Table’,該值將成為“Table”預(yù)制件內(nèi)的“Vase”實(shí)例上的覆蓋。該屬性不再標(biāo)記為場景內(nèi)實(shí)例上的覆蓋,但如果在預(yù)制件模式下打開“Table”預(yù)制件,則“Vase”預(yù)制件實(shí)例上的屬性將在此處標(biāo)記為覆蓋。
覆蓋為“Table”預(yù)制件資源中的覆蓋時(shí),“Vase”預(yù)制件資源本身完全不受影響。這意味著“Table”預(yù)制件的所有實(shí)例現(xiàn)在都在其“Vase”預(yù)制件實(shí)例上具有新值,但不屬于“Table”預(yù)制件的其他“Vase”預(yù)制件實(shí)例不受影響。
如果“Vase”預(yù)制件本身的屬性稍后改變,此更改將影響“Vase”預(yù)制件的所有實(shí)例,但該屬性被覆蓋的實(shí)例除外。由于屬性在“Table”預(yù)制件內(nèi)的“Vase”實(shí)例上被覆蓋,因此更改不會(huì)影響屬于“Table”實(shí)例的任何“Vase”實(shí)例。
應(yīng)用于內(nèi)層預(yù)制件也可能會(huì)影響外層預(yù)制件
將一個(gè)或多個(gè)屬性應(yīng)用于內(nèi)層預(yù)制件資源有時(shí)也可能修改外層預(yù)制件資源,因?yàn)檫@些屬性會(huì)在外層預(yù)制件中恢復(fù)其覆蓋。
在我們的示例中,如果選擇 __Apply to Prefab ‘Vase’__,且“Table”預(yù)制件具有該值的覆蓋,則“Table”預(yù)制件中的此覆蓋將同時(shí)恢復(fù),使實(shí)例上的屬性保留剛應(yīng)用的值。如果不是這種情況,則實(shí)例上的值將在應(yīng)用后立即更改。