SMART替換是一個Unity插件,可幫助您恢復斷開的預製鏈接。除此之外,它還可以使用包含相同腳本的類似預製片中的預製片,而不會丟失任何更改或對象引用。
為了使用插件,需要為您的項目設置相關.NET版本。否則它不會編譯。您可以通過: File -> Build settings -> Other settings -> Configuration -> Scripting Runtime Version -> .NET 4.x Equivalent
下載和安裝軟件包後,您可以通過導航到Tools -> Replace prefab...來打開“智能替換窗口”。
以下示例將顯示插件的主要用例。 YouTube上還有一個視頻,可以更生動地解釋插件。

為了restore a prefab link ,首先將場景對象拖到窗口的相應字段中。接下來,在Unity Project窗口中找到原始的預製,然後將其放在fresh prefab字段上。
在Transfer component values下,您可以選擇所有可能要保留的更改的組件。除了transform值外,目前不支持Unity組件的設置。
製作這些設置後,您可以擊中Replace ,並且將恢復預製鏈接,而不會丟失您在場景中對對象進行的更改。
通常在遊戲開發中,創建了虛擬預製措施來測試遊戲Elememt的特定功能。在遊戲開發的後期階段,將創建一個更好的此按鈕的版本 - 使用更漂亮的型號,紋理,著色器等。
因此,如果您只有虛擬預製措施的級別,但是您想用新的,更好的版本smart.replace替換所有級別,可以為您提供幫助。
下面的示例圖像顯示了帶有按鈕和門的場景。該按鈕具有一個名為Button Click的腳本,其中包含對門對象的引用,因此單擊時可以打開或關閉門。

如您在項目視圖中所看到的,還有另一個按鈕預製,稱為Button 1 。它看起來有些不同,但也包含ButtonClick組件,因此可以像我們當前的按鈕一樣使用。這是替換的好候選者,因此我們首先將場景對象放入Smart.Replace窗口,然後將“ Better Button Prefab”放置在更換後的門參考後,然後replace 。

該按鈕已成功替換,並且仍然對門有參考,因此它仍然有效!
就像這樣,所有組件的所有設置都可以在更換過程中維護,例如integer數值, colors , strings等。
Fresh prefab不需要具有與scene object相同的對象層次結構,因為SMART僅關心組件的交集(有關更多信息,請參見限制)。
我們現在更換門怎麼樣?這似乎有點棘手,因為現在的門還沒有由按鈕引用。但是,當您啟用選項Transfer external references時,Smart.Replace確實會這樣做。
該過程再次相同。我們首先選擇場景對象,然後選擇預製。再次,我們擊中更換,門將用另一個預製板替換。同時,該按鈕對門的引用將更新。
Smart.Replace將搜索所替換對象的外部object和component引用。它甚至將搜索lists和arrays以獲取可能的參考,並將像描述的那樣更新它們。
如果您要替換的場景中有類似的對象,那麼一個一個一個一個一個一個乏味的對象。
Smart.Replace提供搜索相似的對象,因此我們可以一次替換任何數量的對象。首先,我們選擇場景中的任何對象,然後選擇一個預製 - 因此我們可以搜索類似的對象。默認情況下沒有過濾器,因此顯示了場景中的所有對象。在所有對像都具有相似名稱的情況下,按名稱搜索非常有效。您也可以搜索組件。
如果我們現在打更換,我們會看到所有對像都會立即替換。如果他們互相參考,他們也將被保留。
為了使插件易於使用,它有一些您應該知道的限制:
component intersection顯示了統一組件,但目前無法維持其值。唯一的例外是具有自己的UI的transform組件(見下文)。one component type per object 。如果您的場景對像上有相同類型的多個組件,則只能維護第一個值。其餘的將被丟棄。object的外部引用。但是,替換後,外部對象引用將始終指向parent對象。 您可以隨時通過[email protected]與我聯繫。