預(yù)制件-實例覆蓋
_實例覆蓋__允許在預(yù)制件實例之間創(chuàng)建變化,同時仍將這些實例關(guān)聯(lián)到同一預(yù)制件資源。
修改預(yù)制件資源時,更改將反映在其所有實例中。但是,也可以直接對單個實例進行修改。這樣做會在該特定實例上創(chuàng)建__實例覆蓋__。
例如,假設(shè)有一個預(yù)制件資源“Robot”,放置在游戲中的多個關(guān)卡中。但是,“Robot”的每個實例都有不同的速度值,并分配了不同的音頻剪輯。
有四種不同的__實例覆蓋__類型:
覆蓋屬性的值
添加組件
刪除組件
添加子游戲?qū)ο?/p>
預(yù)制件實例存在一些限制:無法更改屬于預(yù)制件的游戲?qū)ο蟮母讣?,且無法刪除屬于預(yù)制件的游戲?qū)ο?。但是,可以停用游戲?qū)ο?,這種操作很適合取代游戲?qū)ο髣h除操作(這算作屬性覆蓋)。
在 Inspector 窗口中,實例覆蓋的名稱標(biāo)簽以粗體顯示,左邊距使用藍線顯示。向預(yù)制件實例添加新組件時,邊距位置的藍線將涵蓋整個組件。

添加和刪除的組件在 Inspector 中的相應(yīng)圖標(biāo)上也有加減符號標(biāo)示,而添加的游戲?qū)ο笤?Hierarchy 窗口中的相應(yīng)圖標(biāo)上有一個加號標(biāo)示。

覆蓋優(yōu)先
預(yù)制件實例上覆蓋的屬性值始終優(yōu)先于預(yù)制件資源的值。這意味著,如果更改預(yù)制件資源的屬性,對覆蓋該屬性的實例沒有任何影響。
如果對預(yù)制件資源進行更改,但未按預(yù)期更新所有實例,則應(yīng)檢查實例上是否覆蓋了該屬性。最好僅在確實必要時才使用實例覆蓋,因為如果整個項目中有大量實例覆蓋,則很難判斷對預(yù)制件資源的更改是否對所有實例都有影響。
對齊根據(jù)特定預(yù)制件實例而定
預(yù)制件實例的__對齊__是一種特殊情況,與其他屬性的處理方式不同。對齊__值絕不會從預(yù)制件資源傳遞到預(yù)制件實例。這意味著對齊值始終可與預(yù)制件資源的對齊不同,而不是作為顯式實例覆蓋。具體而言,對齊表示預(yù)制件實例的根變換的?Position__ 和?Rotation?屬性,對于矩形變換,還包括?Width、Height、Margins、Anchors?和?Pivot?屬性。
這是因為要求預(yù)制件的多個實例采用相同的位置和旋轉(zhuǎn)是極其罕見的情況。更常見的情況是希望預(yù)制件實例具有不同的位置和旋轉(zhuǎn),因此 Unity 不會將它們視為預(yù)制件覆蓋。