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

Unity UI合批的问题

今天看到一个问题,主要说的是Unity中的UI资源合批的问题

之前一直以为主要和UI资源在Hierarchy中的排列顺序有关,但其实这并不是最主要的,因为Unity会对同一个Canvas下的UI进行排序(注:不同Canvas下的资源是不能够合批的)

而合批的关键就是这个【排序】

先简单来说,排序主要根据三个键值:Depth、Material Id、Texture Id

  1. Depth

通常来说就是我们理解的覆盖关系,比如B覆盖在A的上方,即A先渲染,B后渲染,那么我们可以把A、B的Depth分别为0和1、如果都没有个被覆盖,那么大家的Depth都是0。Unity会先根据各个资源的Depth进行一个排序;

  1. Materail 和 Texture

在通过Depth进行排序了之后,同一Depth中的资源会先后根据【Material】和【Texture】在进行两次排序

以上就是Unity最资源排序整理的过程,而在排序了之后,就是合批。这里要注意的是,排序和合批是相互独立互不影响,排序做完了后,根据整体排序的UI资源进行合批。

举个例子,在Hierarchy中有AABB两个资源:

  • 如果深度都是0,排完序后就是AABB,那么就是两批

  • 如果深度有覆盖是0,1,其中

  • 深度为0的资源是ABB,深度为1的是A,那么就是三批

  • 深度为0的资源是AAB,深度为2的是B,那么注意,UI资源的整体排序依然是AABB,所以还是两批

所以可以理解为,深度只是排序的时候的一个基准,当排完序之后,Unity会根据整体的排序结果进行合批,合批的时候不会在乎他们是不是同一深度、材质和纹理。

http://www.lryc.cn/news/3341.html

相关文章:

  • MWORKS--系统建模与仿真
  • PC端开发GUI
  • 解读手机拍照的各个参数(拍照时,上面会有6个符号)
  • 数字钥匙最新进展文章
  • 如何在VMware虚拟机上安装运行Mac OS系统(详细图文教程)
  • C++中的强制类型转换
  • 任何人都可以学习Rasa之优秀Rasa学习资源推荐
  • 数据中心的 TCP-Delay ACK 与 RTO, RACK
  • MySQL与常见面试题
  • FFmpeg进阶: 采用音频滤镜对音频进行转码
  • C++:AVL树
  • Docker中安装Oracle-12c
  • 教你如何用Python分析出选注双色球号码
  • elasticsearch映射及字段类型
  • 1493围圈报数(队列)
  • 【ArcGIS Pro二次开发】(2):创建一个Add-in项目
  • 浏览器缓存是如何提升网站访问速度的
  • Linux中几个在终端中有趣的命令
  • 快来来试试SpringBoot3 中的新玩意~
  • 【寻人启事】达坦科技持续招人ing
  • 【C/C++基础练习题】简单函数练习题
  • 【代码随想录训练营】【Day11】第五章|栈与队列|20. 有效的括号|1047. 删除字符串中的所有相邻重复项|150. 逆波兰表达式求值
  • 基于云原生分布式存储ceph实现k8s数据持久化
  • SpringMVC获取请求参数
  • 详解浏览器从输入URL到页面展示的过程
  • 【吉先生的Java全栈之路】
  • 第二章 Opencv图像处理基本操作
  • 字节一面:在浏览器地址栏输入一个 URL 后回车,背后发生了什么?
  • 推荐3dMax三维设计十大插件
  • Arduino IDE 2.0.6中 ESP32开发环境搭建笔记