您的位置:首页 > 移动开发 > Cocos引擎

cocos creator---对象池使用

2018-02-07 20:43 351 查看
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息