NodePool NodePool 类型 模块: cccc.NodePool 是用于管理节点对象的对象缓存池。 它可以帮助您提高游戏性能,适用于优化对象的反复创建和销毁 以前cocos2d-x 中的 cc.pool 和新的节点事件注册系统不兼容,因此请使用 cc.NodePool 来代替。新的NodePool 需要实例化之后才能使用,每种不同的节点对象池需要一个不同的对象...
对象池就是一组可回收的节点对象,我们通过创建 cc.NodePool 的实例来初始化一种节点的对象池。通常当我们有多个 prefab 需要实例化时,应该为每个 prefab 创建一个 cc.NodePool 实例。当我们需要创建节点时,向对象池申请一个节点,如果对象池里有空闲的可用节点,就会把节点返回给用户,用户通过 node.addChild 将这个...
bulletPools: cc.NodePool[] = [] 节点池的创建 我们有四种子弹,所以要创建四种对象池,每种对象池对应一个子弹类型。cc.NodePool 在 new 时是可以传入复用节点类作为参数的。先导入四种子弹对应的类: import{Bullet_0 }from"./bullet_0" import{Bullet_1 }from"./bullet_1" ...
node = nodePool.get(); } else { node = cc.instantiate(prefab); } 然后,获取资源的依赖关系并记录其引用次数: let deps = cc.loader.getDependsRecursively("prefab/prefab1"); for (let i = 0; i < deps.length; i++) { cc.loader.addPersistRootNode(deps[i]); cc.loader.setAutoRelease(deps...
NodePool cocos的NodePool提供了一个数组,保存和获取数组内对象,并在保存和获取时可执行对象上的unuse和reuse方法。 使用相对简单,看看cocos教程即可。 主要是在获取对象池中实例时,不存在实例,则返回null,不会自动新建。 新建的代码得自己写。 cocos对象池源码 CCNodePool.js: 1 2 3 4 5 6 7 8 9 10 11 12...
在Cocos Creator 中,你可以使用cc.NodePool类来实现节点池的功能。它提供了一组方法,如get、put等,用于获取和回收节点对象。你可以根据具体的游戏需求,灵活地使用节点池来管理节点对象,提升游戏性能。 二、Cocos Creator 节点池如何使用? 在Cocos Creator 中,你可以按照以下步骤使用节点池: ...
cocos creator 中的 cc.NodePool 求教 Creator 2.x 87069407 (dennisliu2009) 2019年02月13日 09:00 #1 将一个prefab(挂有脚本)放入 nodepool 第一次创建执行后没问题,但是 nodepool 在回收put之后,再次取出对象池的prefab就不会执行 挂的脚本里的onload函数;...
如果发现结点数量过多,并且结点频繁创建销毁,例如游戏中的小怪、子弹等数量比较多的重复物体,通常可以通过回收工厂进行优化。回收工厂就是结点用完之后,不销毁,而是缓存起来,下次获取结点可以直接复用缓存中的结点,而不需要重新创建。Cocos 本身提供了回收工厂的接口NodePool,可以了解一下:Cocos 文档。
通常当我们有多个prefab需要实例化时,应该为每个 prefab 创建一个cc.NodePool实例。 当我们需要创建节点时,向对象池申请一个节点,如果对象池里有空闲的可用节点,就会把节点返回给用户,用户通过node.addChild将这个新节点加入到场景节点树中。 我们首先在onLoad方法中创建两个变量:...
像一些战斗中的掉血数字,敌人的血槽,怪物,子弹,英雄头像等等,都是我们常常回去做复用的地方。对于常见一些复杂对象,我们可以使用对象池NodePool进行复用 对于基础的对象我们可以直接进行赋值从而达到复用的目的。 4.CPU及性能优化 1、绝对避免游戏中出现死循环。2、控制游戏帧率。3、H5游戏,JS代码级别优化 ...