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

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.lryc.cn/news/515427.html

相关文章:

  • 前端实现大文件上传(文件分片、文件hash、并发上传、断点续传、进度监控和错误处理,含nodejs)
  • es单机安装脚本自动化
  • Java 数据库连接 - Sqlite
  • CentOS — 目录管理
  • 【第二部分--Python之基础】04 函数
  • 我们公司只有3个人,一个前端,一个后端
  • 基于LabVIEW的BeamGage自动化接口应用
  • 【AI编辑器】Cursor与DeepSeek模型的集成:提升开发效率的新选择
  • vue2实现excel文件预览
  • STM32 和 ESP32
  • R语言中的时间序列分析·
  • QML学习(六) anchors锚点和坐标,以及anchors锚点的使用
  • BFS广度优先搜索详解
  • vue项目利用webpack进行优化案例
  • 如何单独安装 MATLAB 工具箱
  • 组网实训实现
  • openbmc sdk09.03 适配(一)
  • SQL使用存储过程
  • C语言----函数、指针、数组
  • 基于Java的敬老院管理系统的设计和实现【源码+文档+部署讲解】
  • 12306分流抢票软件 bypass v1.16.43 绿色版(春节自动抢票工具)
  • 【数据仓库】hadoop3.3.6 安装配置
  • 小试牛刀-SpringBoot集成SOL链
  • 批量插入报错: No value specified for parameter
  • VSCode设置ctrl或alt+mouse(left)跳转
  • Crosslink-NX应用连载(12):如何复用特殊功能管脚
  • ‘元素.style.样式名‘获取不到样式,应该使用Window.getComputedStyle()获取正真的样式
  • 双目视觉:reprojectImageTo3D函数
  • Arduino Uno简介与使用方法
  • 深入了解 StarRocks 表类型:解锁高效数据分析的密码