大菜
求教, 哪位仁兄有使用nodePool的小例子啊,官方的暗黑斩没怎么看懂
可以查看examples中的case/12-pool
我先是声明 _pool_01,_pool_02两个变量分别存储 _item_01,_item_02,
对应的预制体itemPrefab_01,itemPrefab_02,
然后赋值,
_pool_01 = new cc.NodePool();
_pool_02 = new cc.NodePool();
写了一个传参方法,
getPoolItem(_pool,_itemPrefab)
{
if(_pool.size()>0)
{
return _pool.get();
}
else
{
return cc.instantiate(_itemPrefab);
}
} ,
然后在需要生成物体的时候调用.
_item_01= getPoolItem(_pool_01,itemPrefab_01);
xxx.addChild(_item_01);
or
_item_02= getPoolItem(_pool_02,itemPrefab_02);
xxx.addChild(_item_02);
销毁的时候调用,
_pool_01.put(_item_01);
or
_pool_02.put(_item_02);
问题出现了
先生成_item_01,然后put(_item_01),再生成_item_02,然后put(item_02),再调用生成_item_01打印出来的是 _item_02 并且parent=null
我这段是哪个环节出了问题啊 带佬们
你销毁的时候只做了pool.put(),没有对xxx做清理么?
getPoolItem内用的pool变量名不对呀
xxx里面需要做什么清理吗
这个网页给转了 有的下划线没了 有的下划线变成了/
xxx是你放预制的父节点,你把预制收回了,没做处理?那父节点就还会存在item01,所以你put后,你清理下xxx,再做别的处理
我找到问题了 是自己代码的问题
这么用对象池是好用的
哦 是啥问题?
所有预制体用的是同一个脚本 然后我在cc.class外声明了一个slef,在onload里 self = this; 再然后 先生成物体1, put1生成2 , put2 get 1对乡池里的1物体1 这时self =this(物体2,因为刚生成物体二,在onload里self=this; 复用的物体1不执行onload,导致物体1运行脚本的时候在调用物体2的东西);