UnityUGUI优化合批规则实战

本文介绍了Unity中Drawcall的概念及其对性能的影响,详细讲解了如何通过合批、精灵图集和优化材质纹理来减少Drawcall。通过UnityFrameDebug和UnityProfiler工具分析画面,创建和使用精灵图集将Drawcall从14个降至5个。合批规则包括计算层级、材质和纹理的一致性。此外,还讨论了Z轴旋转、材质和纹理深度对合批的影响,提供实战经验以提升UI渲染效率。
摘要由CSDN通过智能技术生成

简介

通过本篇你能处理好大部分UI多余的drawcall,以及本人在项目过程中处理drawcall的经验(算不上啥哈哈!),Drawcall越多会造成Cpu过载,减少drawcall是优化的大头,希望本篇能对你产生帮助。

什么是Drawcall

简单来讲就是Cpu通过图像编程接口向命令缓存区添加命令,让Gpu通过缓存区获取命令处理。难的我也讲不来.

如何减少Drawcall

通过分析帧画面和打断合批的问题来解决

如何查看项目中的drawcall

Unity FrameDebug

一目了然,Unity真是太棒了,你能通过它知道Unity是怎么绘制图像的

在这里插入图片描述

UnityProfiler

yyds!一下子就能知道被打断,图中显示的就是因为图集不同,那么如何让图集相同呢,那么就可以用到精灵图集了,什么?!你说精灵图集是什么,那你接着往下看
在这里插入图片描述

精灵图集

哎呀!一下子让我说精灵图集什么什么什么的,我怎么说的完,我们就针对问题来学习,上面说到它被打断合批的理由是图集不同,那么我们就让他图集相同不就解决问题了吗,那么如果让他们相同呢,那就使用精灵图集,将sprite打包成一个大的图集

精灵图集的使用
  • 创建图集

在这里插入图片描述
-塞入图片
在这里插入图片描述
-打包图集
在这里插入图片描述

Drawcall减少实战经验

-接下来请看使用图集减少了多少从14到5个

在这里插入图片描述
在这里插入图片描述

接下来我们分析能不能再少点–(是不是丧心病狂了,哈哈!通常界面10个左右是正常的),但是为了教学我必须丧心病狂!
1:通过分析器我发现都是纹理不同造成的,第一我们以及打了图集,那么纹理为什么不同呢,
在这里插入图片描述
2:通过帧调试器发现是文字Text 是存储在Font Texture的,所以导致不能合批,这个不可避免,但是却可以优化,直接往下看合批规则
在这里插入图片描述

合批规则

简介
这个百度真的一大堆我随便抄个吧,但是实战的却比较少,他们随便拿几个图,就开始教了,我接下来直接通过一个项目的界面来分析,简单来讲就是先计算层级号,再计算材质,再计算纹理

下图 两个drawcall都是同一个Font Texture但是没有被合批,因为计算层级时将他们分离了,那么什么是层级呢?在相叠的两张图片中,会优先渲染被叠在下面的那张,然后在渲染上面那张,如果两个图片的材质,纹理相同那么他们同为一个层级(就会被合批为一个drawcall),否则都是不同层级(从0开始加1),下图中,两个材质相同纹理相同,但是由于层级不同导致不能合批,所以我们要想办法让他们相同
在这里插入图片描述
就是我不能传视频只能靠图和白话让你们尽量懂
下图中蓝色箭头和红色箭头分别为两个层级,可以明显的看到红色箭头的文字没有压到下面的灰色底图,但是蓝色箭头就压到了,所以导致了他们层级不同,解决方法就是将文字下移,压到灰色地图就解决了–补充一下–{在大背景的上面存在文字和图片并相互不接触的情况下,文字的渲染优先于图片}
在这里插入图片描述
在这里插入图片描述

Z轴 旋转

其实可以简单的理解成 UI不能与canvas成为异面,必须与canvas紧紧贴合

材质和纹理

材质一定要一样,纹理也要一样,纹理不一样可以通过图集来解决,老项目可以用texturepacket

深度–此深度不是合批的深度计算

深度的话,如果有兴趣的通过UGUI源码可以MaskableGraphic所继承的Graphic的抽象类内部有一个depth的只读属性。通过访问它你可以得到该UI的深度
在这里插入图片描述

到此Drawcall从14个到4个,希望大家能点个赞,不懂的话就多看看,可能是我表述的不好!

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值