節點池 NodePool 與 預製體 Prefab
Prefab
Prefab 是一種可重複使用的物件模板。使用 Prefab 的好處在於,你可以在場景中多次使用相同的物件,而不必每次都從頭開始創建。這使得遊戲開發更加高效,特別是當你需要多次使用相同物件時,例如重複的敵人、道具或 UI 元素。
由 Prefab 資源(Prefab Asset)生成的實例(Prefab Instance)可以繼承模板的數據,又可以有自己客製化的數據修改。
建立 Prefab 資源
有兩個方法能建立 Prefab 資源
-
使用場景中現有節點建立
在場景中將節點編輯好之後,直接將節點從 層級管理器 拖曳到 資源管理器 中即可完成 Prefab 資源的建立。
Note
建立完成後,原節點將自動變成該 Prefab 資源的實例
使用場景中現有節點建立1 -
於資源管理器建立
點選 資源管理器 左上方的 + 按鈕,選擇 Node Prefab 建立;
或於 資源管理器 空白處右鍵,選擇 create ,然後選擇 Node Prefab 。
於資源管理器建立1
使用 Prefab 資源
將 Prefab 資源從 資源管理器 拖曳到 層級管理器 或 場景編輯器 ,即可在場景中產生一個 Prefab 實例。
Note
使用 Prefab 資源建立的實例在 層級管理器 中以綠色文字表示
編輯 Prefab 資源
在 資源管理器 中按兩下 Prefab 資源即可從場景編輯模式切換到 Prefab 編輯模式(左上方顯示 PREFAB 字樣)。
編輯完成後,點選左上方的 Save 按鈕即可儲存編輯後的 Prefab 資源,之後點選 Close 按鈕即可返回場景編輯模式。
Note
對 Prefab 資源的更動會套用至所有關聯的實例。
編輯 Prefab 實例
通用操作
在 層級管理器 中點選 Prefab 實例,屬性檢查器 的頂部會出現 5 個可操作的按鈕。
| 按鈕 | 說明 |
|---|---|
![]() |
進入 Prefab 資源編輯模式。 |
![]() |
斷開實例與 Prefab 資源的關聯。 |
![]() |
在 資源管理器 中標示出 Prefab 資源的位置。 |
![]() |
將目前實例還原回與 Prefab 資源相同,其中名字、位置和旋轉不會還原回 Prefab 資源的設定。 |
![]() |
將目前實例的所有資料更新到所關聯的 Prefab 資源。 |
新增節點
在 Prefab 實例下新增節點,在節點名字的右側會有一個 + ,它的資料儲存在 Prefab 實例下,不會影響關聯的 Prefab 資源的資料。
新增元件
在 Prefab 實例下新增元件,在元件名字的右側會有一個 + ,它的資料儲存在 Prefab 實例下,不會影響關聯的 Prefab 資源的資料。
刪除元件
在 Prefab 實例下刪除包含在 Prefab 資源的元件,會在 屬性檢查器 上增加一條刪除元件的資料,它的資料儲存在 Prefab 實例下,不會影響關聯的 Prefab 資源的資料。
同時在這個被刪除的資料後面出現以下兩個按鈕
| 按鈕 | 說明 |
|---|---|
![]() |
在實例中還原刪除的元件。 |
![]() |
將該刪除的元件在 Prefab 資源中同步刪除。 |
NodePool
NodePool 用於節點管理,將不需要的節點回收進 NodePool,需要使用時再從 NodePool 中取出,避免反覆創建及銷毀。
NodePool 特別適用於節點需要反覆創建和刪除的場景,如遊戲中的子彈。
Note
不同的節點應使用不同的 NodePool 存放
使用方法
- import
- constructors
- .get()
從 NodePool 中取出節點。
如果 NodePool 中沒有節點則回傳 null。
- .put()
將節點放入 NodePool 中。
- .size()
取得目前 NodePool 中的節點數量。
- .clear()
清空 NodePool 中的節點。










