本節書摘來異步社群《unity 5.x遊戲開發實戰》一書中的第2章,第2.5節,作者: alan thorn 譯者: 李華峰 責編: 胡俊英,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。###2.5 金币與預設體
現在已經搞定了金币的基本功能,但是整個場景中還需要更多的金币。上一節提出了一個簡單的解決方案,但是問題是如果這麼做了,當需要對金币的屬性進行改變時,那麼将不得不逐個對所有金币進行修改。為了避免這種繁瑣的重複性工作,可以使用unity中的預設體(prefabs)。預設體功能可以将一個場景中的對象轉換為一個項目(project)面闆上的資源。預設體通常是場景執行個體化中最經常需要的資源。這樣做的優勢就在于,當對資源進行更改的時候,可以将修改自動地應用在一個場景甚至多個場景中所有的執行個體上。
這樣将會使得在使用自定義的資源進行工作時變得更簡單,是以現在先來将金币設定為預設體。首先選中場景中的金币對象,然後将它拖曳到項目(project)面闆中。當完成了這個步驟之後,一個新的預設體就做好了。場景中的對象就會更新成為一個預設體的執行個體。但是這也意味着,一旦這個資源從項目(project)面闆上删除,所有該資源對應的執行個體也就會變得無效,如圖2.22所示。

現在預設體已經成功建立了,可以從項目(project)面闆中向場景中拖曳預設體來建立更多的金币執行個體了。每一個金币的執行個體都和初始的預設體資源相關聯,當對預設體資源做出改動時,這些改變會立刻在所有的執行個體上生效。按照這個思路,向遊戲中添加足夠的金币對象。圖2.23所示為設計的金币分布。
這裡又産生了一個新的問題,即如何才能将一個預設體的執行個體變回一個獨立的遊戲對象,而不再關聯到預設體資源。這是非常有用的,例如有些時候,可能需要利用預設體來執行個體出一些對象,但是又不希望這些對象和預設體關聯在一起。這一點也很容易實作,首先在場景中選中一個預設體的執行個體,然後在應用程式菜單中選中“gameobject | break prefab instance”,如圖2.24所示。
注意 當向場景中添加了一個預設體的執行個體并對其進行了改動之後,如果想将這個改動應用到預設體資源中,就可以選中對象,然後在應用程式菜單中選中“game object | apply changes to prefab”。