
enemy.Js
cc.Class({ extends: cc.Component,propertIEs: { enemySpeed: 0,//设置加速度 },//初始化当前节点的y坐标 init: function () { this.node.y = 0; },onLoad () { },start () { },update (dt) { this.node.y += this.enemySpeed; //每帧运动 },});
game.Js
cc.Class({ extends: cc.Component,propertIEs: { enemyPrefab: { default: null,type: cc.Prefab,},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; // 将生成的敌人加入节点树 this.enemyNew = enemy; enemy.getComponent(‘enemy‘).init(); //接下来就可以调用 enemy 身上的脚本进行初始化, //如果不初始化enemy,在从对象池中获取this.enemyPool.get();的时候,该enemy身上的脚本参数还接着上次调用的时候; //因为执行this.enemyPool.put();只是把enemy重新放回对象池,并不是真正销毁;执行this.enemyPool.get()又可以重新获取出来; },//监听键盘 setinputControl: function () { cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN,this.onKeyDown,this); },onKeyDown: function (event) { switch(event.keyCode) { case cc.KEY.t: this.enemyPool.put(this.enemyNew); //点击键盘T键销毁敌人 break; case cc.KEY.c: this.createEnemy(this.node); //点击C键创建敌人 break; } },onLoad () { this.enemyPool = new cc.NodePool(); //new一个对象池出来 this.setinputControl(); //加载场景后持续监听键盘 },// start () { // console.log(this.enemyPool.size()); // this.createEnemy(this.node); // }, update (dt) { console.log(this.enemyPool.size()); },});总结
以上是内存溢出为你收集整理的cocos对象池的使用全部内容,希望文章能够帮你解决cocos对象池的使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)