物件池模式
在遊戲中時常會有重複的元件頻繁的被使用(Ex: 怪物, 道具, 特效等),當這些元件初始化時由較高的效能損耗,或是元件本身經常需要被創建與銷毀,我們通常就會使用物件池的方式改善系統效能。
物件池模式的核心思想是將那些需要被重複使用的元件事先創建好,存放在一個池(Pool)中。當需要使用時,不再重新創建新的元件,而是直接從池中借用,使用完畢後歸還到池中。這樣可以減少頻繁創建和銷毀元件的開銷,提高效能。
主要角色
- 物件池(Object Pool):存放需要被重複使用的元件的容器。通常實現為一個集合,如陣列或鏈表。
- 物件(Object):需要被重複使用的實際元件,例如怪物、道具、特效等。
使用範例
classDiagram
class ObjectPoolManager {
+size: number
-objectPool: T[]
+creator: (() => T)
+borrowObject() T
+returnObject(obj: T) void
}
class Monster {
+name: string
+attack() void
}
ObjectPoolManager --|> Monster
Cocos 中的使用
NodePool - 詳細使用方法可以參考 Prefab & NodePool