博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cocos Creator 对象池cc.NodePool的使用
阅读量:6992 次
发布时间:2019-06-27

本文共 929 字,大约阅读时间需要 3 分钟。

对象池cc.NodePool

把层级管理器中的节点拖进资源管理器中就创建了预制体;
let和var 一样,是声明变量的关键词, 同一个变量名时,var 即使在{}内也作用全局,let有范围;
(1)将需要数量的节点创建出来,并放进对象池:
//...
properties: {
enemyPrefab: cc.Prefab
},
onLoad: function () {
this.enemyPool = new cc.NodePool();
let initCount = 5;
for (let i = 0; i < initCount; ++i) {
let enemy = cc.instantiate(this.enemyPrefab); // 创建节点
this.enemyPool.put(enemy); // 通过 putInPool 接口放入对象池
}
}

(2)获得对象池中储存的对象了:

// ...
createEnemy: function (parentNode) {
let enemy = null;
if (this.enemyPool.size() > 0) { // 通过 size 接口判断对象池中是否有空闲的对象
enemy = this.enemyPool.get();
else { // 如果没有空闲对象,就用 cc.instantiate 重新创建
enemy = cc.instantiate(this.enemyPrefab);
}
enemy.parent = parentNode; // 将生成的敌人加入节点树
enemy.getComponent('Enemy').init(); //接下来就可以调用 enemy 身上的脚本进行初始化
}

(3)节点退还给对象池,以备之后继续循环利用,:

// ...
onEnemyKilled: function (enemy) {
this.enemyPool.put(enemy); // 将节点放进对象池,这个方法会同时调用节点的 removeFromParent();
}

myPool.clear(); // 调用这个方法就可以清空对象池

转载地址:http://rnbvl.baihongyu.com/

你可能感兴趣的文章
ASP.NET Aries JSAPI 文档说明:AR.Form、AR.Combobox
查看>>
Dubbo系列(2)_RPC介绍
查看>>
JS实现打印功能
查看>>
JavaScript系列文章:不能不看的数据类型检测
查看>>
Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳...
查看>>
Linux 访问权限
查看>>
glob 文件或目录查找
查看>>
Go语言实现HashSet
查看>>
如何将.sof转换成.jic
查看>>
探秘身份认证利器——声纹识别!
查看>>
long和BigDecimal引发的管理思考
查看>>
js-JavaScript高级程序设计学习笔记18
查看>>
Atitit.每月数据采集与备份 v4
查看>>
AutoMapper的使用
查看>>
jdk环境变量配置 java环境变量配置
查看>>
hadoop2.6.0实践:A01 问题处理 DEPRECATED: Use of this script to execute hdfs command is deprecated....
查看>>
新坑:c#弄微信公众号
查看>>
51Nod 欢乐手速场1 C 开心的小Q[莫比乌斯函数]
查看>>
process information unavailable 的解决办法
查看>>
BZOJ 4566: [Haoi2016]找相同字符 [后缀自动机]
查看>>