預製物件(Prefab)

Prefab

Unity 中的預製物件(Prefab),讓你可以儲存一個遊戲物件(GameObject),這個預製物件(Prefab)會包含該遊戲物件的所有組件(Component),屬性值(property values),以及它的子遊戲物件,並且可以建立,更改它的設定,就像是一個可重用的資源(Asset)。預製物件資源(Prefab Asset)就像是一個模板(template),讓你在場景中(Scene)添加預製物件實體(Prefab instance)

  • 任何在 Prefab Asset 的更改,都會自動反應(reflected)到該預製物件的實體上。
  • 預製物件中也可以含有預製物件,這稱為 Nest Prefabs
    • Unity 2018.3b 以後的版本支援 Nest Prefabs
  • 預製物件的實體值可以被覆蓋(override),讓每個預製物件的實體可以有不同的行為
  • 如果在執行期間(runtime)才加入的遊戲物件,那麼這個遊戲物件可以把它變為預製物件,例如子彈,NPC等只會在遊戲期間出現的物件

當你想要在你的遊戲專案中重用遊戲物件(GameObject),例如非玩家角色(non-player character (NPC)),或是一些道具,應該把這個遊戲物件變為預製物件(Prefab),因為Unity的Prefab System會自動幫你同步遊戲物件的資料,讓這些有相同預製物件的實體有同樣的資料。以下常見使用預製物件的例子

  • 環境資源(Environmental Assets):例如在關卡中心顯示多次的樹。
  • 非玩家角色(NPCs):例如某種機器人,出現在關卡中多次,他們以透過覆蓋(override)在移動速度,發出聲音上有所不同。
  • 拋射物(Projectiles):如子彈,箭等,像是海盜船的砲台開火時,要產生一個砲彈實體
  • 主要玩家角色:玩家在每個不同的場景中都會出現在一個開始點上,因此很適將它變為預製物件

建立 Prefab Asset

在 Unity 中建立預製物件資源(Prefab Asset)的方式非常簡單,在Unity編輯器中,將在 Hierarchy window 中的物件使用滑鼠左鍵拖曳到下方的 Project window 即可。操作完成的同時會發現原先的遊戲物件變為淡藍色的,表示它變為預製物件(Prefab instance)了

Reference:

評論