// ...createEnemy:function(parentNode){letenemy =null;if(this.enemyPool.size() >0) {// 通过 size 接口判断对象池中是否有空闲的对象enemy =this.enemyPool.get(); }else{// 如果没有空闲对象,也就是对象池中备用对象不够时,我们就用 cc.instantiate 重新创建enemy = cc.instantiate(this.enemyPrefab...
同时,对象池还可以减少垃圾回收的频率,提高内存利用率。 对象池的优势 提高性能:对象池通过重复利用已经创建的对象,避免了频繁的对象创建和销毁操作,从而提高了系统的性能。相比于每次都创建新的对象,从对象池中获取已经存在的对象可以节省系统开销,并显著减少了系统响应时间。 资源管理和控制:对象池可以对对象进行...
1.对象池需要的接口 exportclassGameCommonPool{//实例的缓存列表privatestaticpool:Set<cc.Node>=newSet();//取出实例publicstaticrequestInstant(prefab:cc.Prefab):cc.Node{returnnull;}//回收实例publicstaticreturnInstant(instant:cc.Node,cleanup:boolean=true):void{}//清空对象池publicstaticreset():void{}}...
cocos的NodePool提供了一个数组,保存和获取数组内对象,并在保存和获取时可执行对象上的unuse和reuse方法。 使用相对简单,看看cocos教程即可。 主要是在获取对象池中实例时,不存在实例,则返回null,不会自动新建。 新建的代码得自己写。 cocos对象池源码 CCNodePool.js: 1 2 3 4 5 6 7 8 9 10 11 12 13 14...
function get() { if (objectPool.length > 0) { return objectPool.pop(); } else { return instantiate(prefab); } } function put(objectNode) { objectPool.push(objectNode); // 在此可以重置节点的状态 } for (let i = 0; i < initialSize; ++i) { ...
cocos creator游戏开发 基础知识点说明 教程目标 通过开发经验给初学者对一些cocos creator2.0+的Api做一些深入的讲解,帮助初学者更好的学习cocos creator,更快速开发小游戏。 效果体验图如下 image.png 我们可以看到我们在未使用对象池(cc.NodePool)的时候,如果我们创建子弹特别多,那我们游戏的性能会显著的降低,为了解...
当我们需要创建节点时,向对象池申请一个节点,如果对象池里有空闲的可用节点,就会把节点返回给用户,用户通过node.addChild将这个新节点加入到场景节点树中。 当我们需要销毁节点时,调用对象池实例的put(node) 方法,传入需要销毁的节点实例,对象池会自动完成把节点从场景节点树中移除的操作,然后返回给对象池。
在Cocos Creator中,我们可以通过以下几个步骤来使用对象池: 1. 创建对象池:在游戏初始化时,我们可以创建一个对象池并指定对象的初始数量。 2. 预加载对象:在游戏初始化的时候,可以通过预加载一定数量的对象,将其放入对象池中。 3. 使用对象:当游戏需要使用某个对象时,可以从对象池中取出一个可用的对象,并对其...
使用示例 如有一个预制体fish,其上有一组件MyFish,MyFish有初始化方法init()和销毁方法myDestroy()。游戏中需管理一组MyFish,大量地创建和销...
本篇文章给大家分享的是有关怎么使用CocosCreator对象池,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 具体操作 第一步:准备好 Prefab 把你想要创建的节点事先设置好并做成 Prefab 资源,有些朋友可能不会制作预制体?