咨询一下有关制作UI时节点层数和DrawCall值的问题

  • Creator 版本:2.1.2

  • 目标平台: Web / iOS / Android

  • 编辑器操作系统 MAC :

最近希望游戏在进行的时候,会有手机较热的问题,我们为了降低游戏的DrawCall值,寻找了蛮多的帖子。由于UI界面之前是交给美术做的,分层方式和PSD较像,引来我们现在对于合批渲染有一些不明白的地方,故来询问。

当前项目中节点复杂程序,如下图:

其中有Label组件(Bitmap和None模式都有使用),Spirte组件(不同的Spirte有做不同的静态合同)

那如果假设这里面我使用的Label组件全部采取Bitmap模式,Spirte组件全部使用一张合图,那么在这样的节点结构下,DrawCall值会否过高?

若此节点结构不合理,是否应该将Label组件和Spirte组件全部分别放到2个节点里面,才能获得最佳的DrawCall值?

望有经验的小伙伴指导一下,我们现在应该更改节点,还是应该更改静态合图?

@jare 手动邀请一下

关注一波

是不是感觉优化的时候比较迷茫?现在我们游戏单界面约150 DrawCall,有时候叠加界面后,就会增加到300+的DrawCall,玩久了就发热的厉害,头疼~~

如果你的界面是全屏的,弹出的时候,底层的界面全部隐藏

这是一个比较好的优化方案。后续优化也是这样去做

但是寻其根本,想知道一下节点如何才是有条理的创建才能最高效的使得平台完成渲染,降低DrawCall

感觉你自己都明白怎么做啊,just do it!

1、使用相同buffer的节点尽量相邻(比如使用同一个图集资源的节点),中间若穿插着使用其它buffer的资源合批就会被打断;
2、label建议Cache Mode都使用BITMAP/CHAR,或者使用位图字体;
3、如果有动态显示的列表等,可以做分层处理,分层规则尽量满足1即可;
4、尽量少用cc.Mask,改用shader;
5、像楼上所说的,底层UI如果不需要展示的可以隐藏。

上面的你都做到了的话,draw call 高不起来。

谢谢大神,基本明白了:grinning:

JUST DO IT!