UGUI优化(四)Canvas动静分离

本文探讨了Unity UGUI系统中的DrawCall优化,尤其是动态合批和动静分离策略。通过减少Canvas下的顶点数量,如选择简单Image模式和谨慎使用复杂Text效果,以及将动态和静态UI元素分配到不同的Canvas,可以显著降低Canvas.SendWillRenderCanvases()和Canvas.BuildBatch()的计算成本,从而提高游戏性能。然而,过多的Canvas分离可能导致DrawCall增加,需要在项目中平衡优化与DrawCall之间的关系。
摘要由CSDN通过智能技术生成

原因
UGUI优化DrawCall最主要的手段就是动态合批。而Unity在做合批的时候是以Canvas为根节点,计算所有UI顶点数据生成一张大的Mesh,在它的下面又会根据Atlas、渲染顺序的不同把能合批的都生成一张小的Mesh,这样每张小Mesh就是一个DrawCall。

而当Canvas下面的UI元素发生变化时,UGUI就要对这个Canvas重新计算生成一次Mesh,体现在Profiler中则是Canvas.SendWillRenderCanvases()与Canvas.BuildBatch()的耗时升高。Canvas.SendWillRenderCanvases()主要是计算Canvas下面所有的顶点数据,Canvas.BuildBatch()则是负责进行Mesh绘制与合批。
在这里插入图片描述

官方优化
不过好在Unity5.2之后,Canvas.BuildBatch()合批已经放在子线程中去执行,大大缓解了主线程压力。但是相应的优化还是有必要去做的。

优化
既然Canvas.SendWillRenderCanvases()是由Canvas下的UI顶点变化而引起重新计算引起的,那么优化就可以从两个方便着手:减少Canvas下的顶点数量、减少重新计算的顶点数量

1)减少Canvas下的顶

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值