cocos creator---对象池使用
1、对象池,顾名思义就是暂时存放对象的容器;常用存放prefab,尽可能的减少Canvas画布上节点的挂载。加快加载速度。2、使用:a、准备prefabb、初始化对象池---场景初始化加载中,创建需要数量的节点,放到对象池中properties: {enmyPrefab: cc.Prefab},...
·
1、对象池,顾名思义就是暂时存放对象的容器;
常用存放prefab,尽可能的减少Canvas画布上节点的挂载。加快加载速度。
2、使用:
a、准备prefab
b、初始化对象池---场景初始化加载中,创建需要数量的节点,放到对象池中
properties: {
enmyPrefab: cc.Prefab
},
onLoad: function () {
this.enemyPool = new cc.NodePool();
// NodePool(用来重复创建和销毁节点,官方文档:://docs.cocos.com/creator/api/zh/classes/NodePool.html)。
}
c、从对象池中
createEnemy: function () {
let enemy = null;
//c1、当前对象池中的可用对象数量
if (this.enemyPool.size > 0) {
//_1、从对象池中获取对象
eneny= this.enemyPool.get();
} else {
//_2、若没有空闲的对象,也就是对象不够用时,就克隆节点
enemy = cc.instantiate(this.enemyPrefab);
}
//c2、将生成的节点挂载到节点树上
enemy.parent = parentNode;(或者node.addChild(新节点))
//c3、调用enemy的脚本进行初始化
enemy.getComponent('Enemy').init();
}
d、将不用的对象回收到对象池中
onEnemyKilled: function (enemy) {
this.enemyPool.put(enemy);
}
e、清除对象池(切换场景或者节点不再被需要时清空)
myPool.clear();
更多推荐
已为社区贡献1条内容
所有评论(0)