请教cocos draw call优化问题

我们做一个割草类型的游戏,在做优化的时候发现,发现一开始draw call很低(应该是cocos自己进行动态合批了),但跑着跑着draw call会增加,我用spector抓了下看到经常在渲染怪物的时候出现两个不一样的texture交替出现的情况导致没法合批。
image
为什么会出现这种情况,我该如何优化呢?

动态合图满了

是的,我找到解决方案了,为了确保怪物都进动态图集,手动把所有技能图片理一遍,要么加个auto-atlas,要么就取消packable属性

常用的尽量静态和图 手动atlas 管理,怪物一类 技能一类

不知道cocos有没有按照节点去合动态图集的功能,如果有的话就方便了。

这个啥意思

就是比如说我有两个节点,一个节点A放所有怪物,一个节点B放所有技能,能否通过设置来使节点A的所有怪物是一个动态图集,节点B的所有技能是另外一个图集,而不是按照使用的先后顺序来合图集

那会出现另外一个问题,节点A1 - A100 得准备100个图集。。每个图集1024*1024 内存就爆炸了

这种事情还是不要太依赖动态合图吧,用静态合图打图集是最好的,可控

感觉动态图集是最适合我们的,因为怪物有20来种,但是没关只出现3种怪物,静态图集合并方式要么所有怪物合一起(感觉比较费,而且会多张图做不到draw call为1),或者每只怪物一张图集(这种情况也做不到draw call为1),要么按照策划配置利用冗余的方式将3种怪物合在一起,这种感觉也不太靠谱,策划一改动就得重新合。
其他也想不到有什么好方式了。

动态图集只能是RGBA8888格式吧. 内存是astc的4-32倍
割草游戏的性能瓶颈在于逻辑, drawcall可以优化, 但追求极限的意义大吗?
另外可以使用深度缓存来使同一个类型的怪物一批渲染出来(详见莉莉丝的剑与家园)

2赞