UGUI drawcall优化思路(以主界面优化为例)

本文详细介绍了在MMORPG游戏主界面进行Drawcall优化的过程,包括建立Atlas_MainUI图集,将所有主界面图片整合,并最终合并到Atlas_Common中以降低内存占用。在实践中遇到的问题如字体错误、不必要的Canvas、空Image处理等进行了总结,并提供了优化工具和注意事项,以减少drawcall数量。尽管目标是将drawcall降至2个,但实际操作中因滚动控件等复杂因素,优化后主界面drawcall保持在10个。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图集内图片管理命名的以后以图集名_的形式区分比如MainUI_
由于mmorpg游戏主界面的特殊性,在游玩游戏的时候,主界面会一直处于开启常驻的状态,不像我们打开其他的界面的时候会关闭主摄像机,场景物件的drawcall都会不计算在当前drawcall数中。我们要做的就是把主界面的drawcall优化到极致,专门建一个Atlas_MainUI图集,主界面上所有用到的图片,不管重复与否,都在这个图集里加一份,基于这个思路,我们后来在做图集内存优化的时候把Atlas_MainUI图集直接合并到了Atlas_Common里,也就是主界面上的所有东西,直接使用Atlas_Common图集。这样做的好处1是方便优化drawcall,2降低了在主城操作情况下图集内存的占用,做的好坏还是差了几十兆内存的。下面上优化之前的图
工具1 drawcall优化
在这里插入图片描述

工具2
在这里插入图片描述
下面是优化过程中碰到的没做好的地方,供大家避坑
1、老图集没用新图集替换掉导致的合批失败
2、用错字体导致合批失败 这个很伤,一个字体用错会导致3个额外drawcall
3、不必要的canvas导致不必要的大量drawcall
4、空的image不给任何图集会产生drawcall,不要显示着透明度调成0
5、通过framedebuger看哪一步阻碍了合批
6、滚动控件里子元素千万不要手抖加上了canvas,不然带来的开销将是灾难性的,直接打开prefab搜索canvas可以搜到控件上是否有canvas组件
7、text在优化的时候,发现一个很严重的问题,就是字体和图片的层级关系会影响合批,字体在图片区域内和区域外合批是不同的,字体遮挡图片和被图片遮挡合批是不同的,组件只需要相互遮挡住一点点,结果就不一样,要渲染出来的区域的遮挡关系,打几个空格是不起作用的,同理,图片与图片的遮挡关系别搞错了
8、outline对合批的影响 outline不会影响合批
9、根据调节会打断合批的点的上下顺序,达到减少drawcall的效果

理论上讲,主界面最佳的优化效果是只占有2个drawcall,但是在实际操作中,由于无法避免的滚动控件、mask、效果材质球等的使用,最终优化后的主界面drawcall停留在了10个。其他界面的drawcall优化思路和主界面的优化思路大致相同。有的时候必须要使用mask做小地图,在图集里加入一个白色图片,赋值到mask用的空image中,可以减少一个drawcall。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值