cocos对象池的使用
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对象池的使用相关推荐
- cocos Creator 3.2 关于 NodePool 对象池的应用- (弹出框)
1:NodePool 作用 NodePool 是用于管理节点对象的对象缓存池.它可以帮助您提高游戏性能,适用于优化对象的反复创建和销毁 以前 cocos2d-x 中的 pool 和新的节点事件注册 ...
- Cocos Creator 性能优化——对象池
对于游戏开发人员来说,性能优化是一个永远绕不过的话题,极致的性能是我们毕生的追求,今天就来带大家学习一下性能优化方法之一--「对象池」. 为什么要使用对象池? 在开始之前要先弄明白为什么要使用对象池 ...
- python求5_python(五)——运算符,小整数对象池
1.成员运算符,判断某个东西是否在某个东西里包含:in,not in name = "abcd" if "ac" inname:print("ok&q ...
- 面试官问:对象池技术了解吗?apache common pool2呢?
欢迎关注方志朋的博客,回复"666"获面试宝典 对象池顾名思义就是存放对象的池,与我们常听到的线程池.数据库连接池.http连接池等一样,都是典型的池化设计思想. 对象池的优点就是 ...
- golang的临时对象池sync.Pool
今天在写码之时,发现了同事用到了sync.pool.因不知其因,遂Google之.虽然大概知道其原因和用法.还不能融汇贯通.故写此记,方便日后查阅.直至明了. 正文 在高并发或者大量的数据请求的场景中 ...
- 转载 Xmlhttprequest对象池
2019独角兽企业重金招聘Python工程师标准>>> 在ajax应用中,通常一个页面要同时发送多个请 求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就 ...
- [转]建一个XMLHttpRequest对象池
在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也 ...
- Unity中对象池的使用
unity中用到大量重复的物体,例如发射的子弹,可以引入对象池来管理,优化内存. 对象池使用的基本思路是: 将用过的对象保存起来,等下一次需要这种对象的时候,再拿出来重复使用.恰当地使用对象池,可以在 ...
- Java 程序优化之对象池
对象池概念: 如果一个类被频繁请求使用,那么不必每次都生成一个实例,可以将这个类都一些实例保存到一个"池"中,待需要使用的时候直接从"池"中获取.这个" ...
最新文章
- windows10远程控制 电脑,远程桌面
- python用户登录_【python】实例-用户登录系统
- android中使用DisplayMetrics获取屏幕参数
- tf.keras遇见的坑:Output tensors to a Model must be the output of a TensorFlow `Layer`
- mysql 开启断线重连_[BUG反馈]MYSQL长连接中(SWOOLE) 使用事务提交开启断线重连接抛出异常...
- CF718E Matvey‘s Birthday(状压、bfs、暴力、分类讨论)
- 【数组】—冒泡排序选择排序---【巷子】
- python mpi 多节点_python – 如何找到MPI(4PY)可用的内核数量?
- 手写 Promise
- Python框架篇之Django(Template基础:模板语法、过滤器filter)
- html php插入百度地图定位
- 渗透测试流程-全(仅供学习,知识分享)
- 百度热力图和高德热力图对比
- 各种路由器接口与连接方法
- 高性能零售IT系统的建设05-从0打造一个每秒万级并发的互联网交易系统的技术全架构
- 轻量应用服务器腾讯云,腾讯云轻量应用服务器 ECS云服务器使用对比
- java web开中WebRoot下的jsp和WebRoot文件夹下的jsp(html)引用css样式
- 2012情人节语录1
- 睡眠排序算法c语言实现,Linux 进程必知必会
- NOI2009 诗人小G
热门文章
- hdu 5591 ZYB's Game 博弈论
- 基于开源Flash Server:Red5构建RTMP流媒体播放平台
- 蓝桥杯:基础练习 闰年判断
- c#_按值传递与按引用传递的区别
- linux mysql 自动加斜杠_【实战演练】Linux操作系统19-Mysql主主复制加Keepalived高可用...
- 计算机制作印章,制作印章软件【处理办法】
- oracle12c racpdb,Oracle 12C R2的CDB与PDB简单管理操作
- PHP中用编码代码,编码对照表的使用(2)_php
- linux ssh Unused,ssh免密码登录 - leopardlinux的个人空间 - OSCHINA - 中文开源技术交流社区...
- 苹果手机各种型号图片_洪湖苹果X尾插华强北档口诚信收购