散图和图集的优劣

最近做了一个小游戏,类似于保卫萝卜,但是游戏出奇的卡,后来看到 所有频繁创建的怪物和子弹都放到了一张2048*2048的大图上面,不知道是不是这个造成的卡顿,请教一下各位!

怪物和子弹可以使用对象池

主要看你做了哪些很消耗性能的操作,你可以排除法(注释部分代码)检查一下是什么导致卡,不然你怎么确定是频繁创建导致。。。一定量的频繁销毁创建是没问题的

自顶一下,基本的优化都会有的,包括对象池,二楼的排出发也试过了,所以结论是怪物的图集和子弹和特效的UI不能合批,导致这些图集多次创建使用,即使放到节点池,也在占用大量内存。

怪物的图集是20482048的,我唯一的疑问是这个20482048图集创建的怪物站的内存是多少,是16M还是只有怪物的那点,我的结论是16M一个小怪物,但是这一块不太懂,没有找到具体原理。

20482048的图集,在第一次加载的时候,占用的内存是16M,如果这个图集是jpg格式的,这个内存还会翻倍,之后加载图集内的小图都是从内存中获取,不存在你说的16M一个小怪物,不然你的内存早就炸了;关于你现在卡的原因,不知道具体实现逻辑,但是单从图集的尺寸来说,是比较大的,我之前使用2dx加载图集,图集的尺寸基本都定义1024*1024

建议看下以下几个点

  1. 是否有 js 对象的频繁创建和GC (不是 cc.Node 对象)
  2. 子弹的数量及其挂载的特效估计是最大的问题。
  3. 碰撞检测逻辑