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());},
});

转载于:https://www.cnblogs.com/JahanGu/p/9322883.html

cocos对象池的使用相关推荐

  1. cocos Creator 3.2 关于 NodePool 对象池的应用- (弹出框)

    1:NodePool  作用 NodePool  是用于管理节点对象的对象缓存池.它可以帮助您提高游戏性能,适用于优化对象的反复创建和销毁 以前 cocos2d-x 中的 pool 和新的节点事件注册 ...

  2. Cocos Creator 性能优化——对象池

    ​对于游戏开发人员来说,性能优化是一个永远绕不过的话题,极致的性能是我们毕生的追求,今天就来带大家学习一下性能优化方法之一--「对象池」. 为什么要使用对象池? 在开始之前要先弄明白为什么要使用对象池 ...

  3. python求5_python(五)——运算符,小整数对象池

    1.成员运算符,判断某个东西是否在某个东西里包含:in,not in name = "abcd" if "ac" inname:print("ok&q ...

  4. 面试官问:对象池技术了解吗?apache common pool2呢?

    欢迎关注方志朋的博客,回复"666"获面试宝典 对象池顾名思义就是存放对象的池,与我们常听到的线程池.数据库连接池.http连接池等一样,都是典型的池化设计思想. 对象池的优点就是 ...

  5. golang的临时对象池sync.Pool

    今天在写码之时,发现了同事用到了sync.pool.因不知其因,遂Google之.虽然大概知道其原因和用法.还不能融汇贯通.故写此记,方便日后查阅.直至明了. 正文 在高并发或者大量的数据请求的场景中 ...

  6. 转载 Xmlhttprequest对象池

    2019独角兽企业重金招聘Python工程师标准>>> 在ajax应用中,通常一个页面要同时发送多个请 求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就 ...

  7. [转]建一个XMLHttpRequest对象池

    在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也 ...

  8. Unity中对象池的使用

    unity中用到大量重复的物体,例如发射的子弹,可以引入对象池来管理,优化内存. 对象池使用的基本思路是: 将用过的对象保存起来,等下一次需要这种对象的时候,再拿出来重复使用.恰当地使用对象池,可以在 ...

  9. Java 程序优化之对象池

    对象池概念: 如果一个类被频繁请求使用,那么不必每次都生成一个实例,可以将这个类都一些实例保存到一个"池"中,待需要使用的时候直接从"池"中获取.这个" ...

最新文章

  1. windows10远程控制 电脑,远程桌面
  2. python用户登录_【python】实例-用户登录系统
  3. android中使用DisplayMetrics获取屏幕参数
  4. tf.keras遇见的坑:Output tensors to a Model must be the output of a TensorFlow `Layer`
  5. mysql 开启断线重连_[BUG反馈]MYSQL长连接中(SWOOLE) 使用事务提交开启断线重连接抛出异常...
  6. CF718E Matvey‘s Birthday(状压、bfs、暴力、分类讨论)
  7. 【数组】—冒泡排序选择排序---【巷子】
  8. python mpi 多节点_python – 如何找到MPI(4PY)可用的内核数量?
  9. 手写 Promise
  10. Python框架篇之Django(Template基础:模板语法、过滤器filter)
  11. html php插入百度地图定位
  12. 渗透测试流程-全(仅供学习,知识分享)
  13. 百度热力图和高德热力图对比
  14. 各种路由器接口与连接方法
  15. 高性能零售IT系统的建设05-从0打造一个每秒万级并发的互联网交易系统的技术全架构
  16. 轻量应用服务器腾讯云,腾讯云轻量应用服务器 ECS云服务器使用对比
  17. java web开中WebRoot下的jsp和WebRoot文件夹下的jsp(html)引用css样式
  18. 2012情人节语录1
  19. 睡眠排序算法c语言实现,Linux 进程必知必会
  20. NOI2009 诗人小G

热门文章

  1. hdu 5591 ZYB's Game 博弈论
  2. 基于开源Flash Server:Red5构建RTMP流媒体播放平台
  3. 蓝桥杯:基础练习 闰年判断
  4. c#_按值传递与按引用传递的区别
  5. linux mysql 自动加斜杠_【实战演练】Linux操作系统19-Mysql主主复制加Keepalived高可用...
  6. 计算机制作印章,制作印章软件【处理办法】
  7. oracle12c racpdb,Oracle 12C R2的CDB与PDB简单管理操作
  8. PHP中用编码代码,编码对照表的使用(2)_php
  9. linux ssh Unused,ssh免密码登录 - leopardlinux的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. 苹果手机各种型号图片_洪湖苹果X尾插华强北档口诚信收购