[LayaAir2]性能统计面板中的渲染节点Sprite数量会不断增加,游戏越来越卡

在游戏中定时10s刷新怪物,游戏中怪物全部清除完后才刷新怪物,怪物是添加在tiledmap地图的maplayer层上的,清除怪物也是从maplayer层上清除的,不添加怪物时渲染节点Sprite数量是245左右,添加了指定数量的怪物动画后渲染节点Sprite数量是800左右,也就是说指定数量的怪物动画增加的渲染节点Sprite数量是555左右,清除完添加的指定数量的怪物动画后,理论上渲染节点Sprite数量应该降回到245左右,可是渲染节点Sprite数量只降低到了300左右,随着不断的刷新怪物再清除怪物,渲染节点Sprite数量会越来越高,玩的时间长了游戏就变得越来越卡,理论上不论玩多久的游戏,只要清除完怪物动画,渲染节点Sprite数量应该都会降回到245左右,不会不断的增加的。怪物动画是用fairygui做的MovieClip帧动画,动画都是从对象池中取的,清除动画后也都回收到对象池的。我查了很久都没有发现有什么逻辑上的问题,这个问题也困扰了我很久,始终想不明白具体是什么问题,希望官方能够帮忙看一下具体的原因,麻烦尽快给我解答一下,万分感谢!!!demo的源文件和动画的源文件都上传了。直接编译laya项目就可以运行起来。用的是2.13.3引擎。添加和清除怪物动画的逻辑在项目中的MonsterManager.ts类文件中。 
已邀请:

何吓吓

赞同来自:

清理函数有问题,但是我回复不了?????arr.map和splice不要同时用

何吓吓

赞同来自:

很简单,你的清理函数写得有问题,
我自己弄了个新的函数,用你的逻辑,是清理不掉的,因为你splice之后,index变了
我在battleSceen加了个全局的,测试了一下可以。
 
 
 

何吓吓

赞同来自:

为啥我的回复不见了,
很简单,你的清理函数有问题
删除之后index增加了导致有些没清理成功。
我在你的代码里加了个函数clearMonster你可以试试。并吧battlescene做成了全局,可以在控制台控制
 

何吓吓

赞同来自:

好了可以了。还是逻辑有问题。子弹没有回收成功,之所以没有显示在场景上是因为跑到场景外面去了,x,y一直增或者一直减,但是
BulletManager中的_bulletArr却又没有。所以回收不了。
 
修改已经上传。
 
另外,laya不是自带调试节点的面板嘛,虽然不好用但是也能用,
main.ts中的注释:
打开调试面板(通过IDE设置调试模式,或者url地址增加debug=true参数,均可打开调试面板),这里面可以查看节点还在。
 
微信私了,加不加都行。
 
 

要回复问题请先

商务合作
商务合作