import { _decorator, Component, Node, loader, Prefab, instantiate } from 'cc'; import { GameController } from '../GameController'; import { MonsterBase } from './MonsterBase'; import { MonsterHP } from './MonsterHP'; const { ccclass, property } = _decorator; export class MonsterHPUIPool extends Component { private static pool:MonsterHP[]=[]; /** * 创建 */ public static Create():MonsterHP{ let monsterHPView:MonsterHP; if(this.pool.length>0){ monsterHPView=this.pool.shift(); GameController.single.monsterHPUILayer.addChild(monsterHPView.node); return monsterHPView } let prefab:Prefab=loader.getRes("ui/components/MonsterHPUI"); let viewNode:Node=instantiate(prefab); monsterHPView=viewNode.addComponent(MonsterHP); GameController.single.monsterHPUILayer.addChild(viewNode); return monsterHPView; } public static Recycle(monsterHPView:MonsterHP):void{ GameController.single.monsterHPUILayer.removeChild(monsterHPView.node); monsterHPView.monster=null; if(this.pool.indexOf(monsterHPView)>=0){ throw new Error("重复回收") } this.pool.push(monsterHPView); } }