MonsterHPUIPool.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { _decorator, Component, Node, loader, Prefab, instantiate } from 'cc';
  2. import { GameController } from '../GameController';
  3. import { MonsterBase } from './MonsterBase';
  4. import { MonsterHP } from './MonsterHP';
  5. const { ccclass, property } = _decorator;
  6. export class MonsterHPUIPool extends Component {
  7. private static pool:MonsterHP[]=[];
  8. /**
  9. * 创建
  10. */
  11. public static Create():MonsterHP{
  12. let monsterHPView:MonsterHP;
  13. if(this.pool.length>0){
  14. monsterHPView=this.pool.shift();
  15. GameController.single.monsterHPUILayer.addChild(monsterHPView.node);
  16. return monsterHPView
  17. }
  18. let prefab:Prefab=loader.getRes("ui/components/MonsterHPUI");
  19. let viewNode:Node=instantiate(prefab);
  20. monsterHPView=viewNode.addComponent(MonsterHP);
  21. GameController.single.monsterHPUILayer.addChild(viewNode);
  22. return monsterHPView;
  23. }
  24. public static Recycle(monsterHPView:MonsterHP):void{
  25. GameController.single.monsterHPUILayer.removeChild(monsterHPView.node);
  26. monsterHPView.monster=null;
  27. if(this.pool.indexOf(monsterHPView)>=0){
  28. throw new Error("重复回收")
  29. }
  30. this.pool.push(monsterHPView);
  31. }
  32. }