import { _decorator, Component, Node, Prefab } from 'cc'; import { GameObjectPool } from './GameObjectPool'; export class PoolManager { private static _instance: PoolManager; private _pools: Map = new Map(); public static get instance(){ if(!this._instance){ this._instance = new PoolManager(); } return this._instance; } public registerPool(prefab: Prefab, initialSize: number = 10){ const key = prefab.name; if(!this._pools.has(key)){ this._pools.set(key, new GameObjectPool(prefab, initialSize)); } } //获取节点实例 public get(prefab: Prefab): Node{ const key = prefab.name; if(!this._pools.has(key)){ this.registerPool(prefab); } return this._pools.get(key)!.get(); } //回收节点 public put(node: Node){ const key = node.name; if(this._pools.has(key)){ this._pools.get(key)!.put(node); } else { Error("PoolManager destroy") node.destroy(); } } }