[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类文件中。 
已邀请:

Luren_yi

赞同来自:

我直接用 MonsterManager 里的 createMonstors,再加了一个按照 _monstors 数组回收所有的monstor 对象的方法。反复添加回收,没有复现sprite一直增多的问题。大致是别的逻辑导致的泄露。

何吓吓

赞同来自:

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

要回复问题请先

商务合作
商务合作