当前位置: 首页 > article >正文

UGUI 优化DrawCall操作记录(基于Unity2021.3.18)

UGUI中相同材质相同Shader相同贴图的UI元素可以合并DrawCall。

1.使用图集

Unity性能优化---使用SpriteAtlas创建图集进行批次优化_unity2021.3.33 spriteatlas优化-CSDN博客

2.Canvas的子物体在场景树中的索引位置和不同图集不影响UI合批且UI网格没有重叠,如下图:

如上图调用了三次绘制,两个图集两个DrawCall,两个文字一个DrawCall。

注:场景树中不管UI组件是Canvas的子物体还是UI组件的子物体,都是按照从Canvas的深度优先计算depth的。

3.如果不同图集UI的mesh相交,Depth小的会打断Depth大图集的合批,被打断的Depth大的组件相同图集的会合并为一个DrawCall。注:下图中的数字代表深度

注:上述所提的深度可以在EventSystem中查看

注:depth就是graphic中的depth,

这个depth就是相对根Canvas的绝对深度。

4.相同图集UI的Mesh相交或者文字的Mesh相交不会影响UI合批,文字组件的字不一样不会影响UI的合批。

相同图集的一个mesh,文字一个mesh

6.如果文字与非文字组件Mesh相交,会打断文字的合批,若放在depth大于文字Image上还会打断图集的合批。

 

7.半屏幕的背景图单独使用一个Canvas可以避免因UI的mesh相交而打断合批。

因为UI元素不会全在背景图的网格之内,而背景图片depth又比较小,所以它会影响depth比较大的UI合批。

如果将背景图片添加Canvas组件之后

 因为不同Canvas不会进行合批计算,所以这样就避免了背景图片打断合批的操作。

上述是从Unity中实测而来,后续遇到其他还会补充 ,如有不对的地方欢迎评论告诉我。


http://www.kler.cn/a/467147.html

相关文章:

  • pip error: microsoft visual c++ 14.0 or greater is required
  • Gitee图形界面上传(详细步骤)
  • 125个Docker的常用命令
  • 【信息系统项目管理师】高分论文:论信息系统项目的风险管理(资金管控系统)
  • 创建并配置华为云虚拟私有云
  • 你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗?
  • 049_小驰私房菜_MTK Camera debug,通过adb 命令读写Camera sensor寄存器地址的值
  • iOS 中performBatchUpdates 的机制
  • Day2 -- QingLuoPay基础功能搭建
  • window11 wsl mysql8 错误分析:1698 - Access denied for user ‘root‘@‘kong.mshome.net‘
  • vue3 ui组件子组件封装v-model绑定props modelValue
  • 使用SSH建立内网穿透,能够访问内网的web服务器
  • 使用Docker部署最新版JupyterHub
  • 如何利用群晖NAS实现远程访问你的网页版Linux虚拟桌面环境
  • [gcc]代码演示-O使用场景
  • SQL中聚类后字段数据串联字符串方法研究
  • kernel32.dll动态链接库报错要怎解决?详细解析kernel32.dll文件缺失解决方案
  • 什么是 C++ 的序列化?
  • 【一文解析】新能源汽车VCU电控开发——能量回收模块
  • STM32-笔记23-超声波传感器HC-SR04
  • kubernets基础入门
  • 基于STM32的热带鱼缸控制系统的设计
  • 大模型数据采集和预处理:把所有数据格式,word、excel、ppt、jpg、pdf、表格等转为数据
  • 高清监控视频的管理与展示:从摄像头到平台的联接过程
  • 呼叫中心中间件实现IVR进入排队,判断排队超时播放提示音
  • Git快速入门(一)·Git软件的安装以及GitHubDesktop客户端的安装