pool_manager.ts 986 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import game_helpers from "./game_helpers";
  2. const { ccclass, property } = cc._decorator;
  3. @ccclass
  4. export default class pool_manager {
  5. pools: any = {};
  6. resKey: any = {}
  7. init(callback,res:cc.Prefab)
  8. {
  9. this.resKey['TileBlock'] = res
  10. for (let i = 0; i < 100; i++) {
  11. let node = cc.instantiate(res)
  12. this.recover('TileBlock', node)
  13. }
  14. callback&&callback()
  15. }
  16. get(key: string) {
  17. if (this.pools[key] == null) {
  18. this.pools[key] = new cc.NodePool()
  19. }
  20. if (this.pools[key].size() > 0) {
  21. let node = this.pools[key].get()
  22. return node.getComponent(node.name)
  23. }
  24. let node = cc.instantiate(this.resKey[key])
  25. return node.getComponent(node.name)
  26. }
  27. recover(key: string, node: cc.Node) {
  28. if (this.pools[key] == null) {
  29. this.pools[key] = new cc.NodePool()
  30. }
  31. this.pools[key].put(node)
  32. }
  33. }