Unity - 搬砖日志 - UGUI合批优化 - Overlap(UI AABB 有重叠), Z != 0 照样合批的方案


环境

Unity : 2020.3.37f1
Pipeline : BRP

(另一个项目在 2021.1.xx 的 LTS 下的 URP 管线同样如此,目测:因为 UGUI 不受渲染管线切换而变化)


目的

便于索引,记录搬砖


Screen Space - Overlay

可以看到,下图
Canvas 的 Render Mode 在使用: Screen Space - Overlay 模式下的DC为 8
在这里插入图片描述

这里导致合批失败的有两个问题:

  1. 图片显示有相互的堆叠遮挡
  2. 部分UI组件的localPosition.z != 0

UI AABB overlap
在这里插入图片描述在这里插入图片描述

localPosition.z != 0
在这里插入图片描述

DrawCall 就会增加很多
在这里插入图片描述

相当于一个都合批不了,要是UI复杂,有多,那么性能就渣渣了


优化

如下图

我们修改了这些内容,即可合批:

  • Canvas Render Mode 调整为:Screen Space - Camera,并指定相机
  • 然后将 UI 的 Hierarchy 层级嵌套要展平,需要同级化
  • 然后 shader 需要开启 alpha test 和 ZWrite On, ZTest LEqual

在这里插入图片描述

Canvas Render Mode 调整为:Screen Space - Camera,并指定相机
在这里插入图片描述

然后将 UI 的 Hierarchy 层级嵌套要展平,需要同级化
在这里插入图片描述

Alpha Test, ZWrite On, ZTest LEqual
在这里插入图片描述

在这里插入图片描述


限制

这个方案目前总结下来有那么一些限制:

  1. 如果透明区域不是偏向 矩形的,那么只能开启 alpha test
  2. 如果开其alpha test 那么边缘效果黑背景混合锯齿感比较强
  3. hierarchy 视图中的 go 层级需要调整,导致无法使用 parent 的整体移动
  4. 如果需要整体移动需要自己写组件同步位置

该方案起源

其他项目组的一位 TA 大佬,分享了一下 UI 的 AABB Overlap 下的合批
结果他自己做了一些尝试,发现可以这么整
这种如果有 UGUI 黑箱部分的合批逻辑,都会比较好处理(比如,如果你们项目有购买 unity 引擎源码,那是可以一探究竟,甚至可以自行修改的)

然后我们没有unity引擎源码,在这种情况下,这位TA大佬都测试出来了,真的牛逼

(然后这种方式其实在 UWA UGUI 优化课程中也有讲到类似的优化,到时连接我就不方便发了,给自己看,我也贴上来吧:Unity - UGUI 优化 (NGUI vs UGUI) - 笔录 - UWA大神推荐学习篇


因此我将这次大佬的研究成果直接记录笔记,便于后续索引,备忘


另外,这些内容纯纯是搬砖,都是基于别人的引擎(unity引擎)下使用UGUI 的一些问题

较真怎么才不属于搬砖:

  • 寻找硬件物质材料
  • 制作硬件
  • 制作芯片
  • 编写硬件芯片驱动程序
  • 编写操作系统
  • 再操作系统上编写编程语言(不使用二进制指令的编写方式,规模大就不可维护)
  • 编写编译器
  • 编写IDE
  • 使用你自己的IDE编写引擎APP
  • 再使用你自己的系统编写引擎的渲染器
  • 再编写渲染与硬件加速渲染结合

那么恭喜你,终于不是搬砖了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity-UGUIUnity游戏引擎中的一个UI系统,可以用来创建和管理用户界面。它提供了丰富的功能和工具,使得开发者能够轻松地制作各种表格。 使用Unity-UGUI制作表格的步骤如下: 1. 创建Canvas对象:在Unity中,首先需要创建一个Canvas对象,作为UI渲染的容器。选择GameObject -> UI -> Canvas,即可创建一个Canvas对象。 2. 添加Table组件:选择Canvas对象,在Inspector面板中点击"Add Component"按钮,然后在搜索栏中输入"Table",选择适合的Table组件,点击添加。 3. 设置表格的行列数:在Table组件的Inspector面板中,设置表格所需的行数和列数。 4. 设置表格样式:可以在Inspector面板中设置表格的颜色、大小等属性,以满足具体需求。 5. 添加表格内容:可以通过代码或者拖拽方式,向表格中添加所需的文本或图片。可以通过操作表格的行列索引,将内容放置在特定的位置。 6. 设置表格的交互性:可以为表格中的每个单元格添加点击事件或其他交互效果,提升用户体验。 7. 调整表格布局:可以通过调整Canvas的大小、位置,或者改变组件之间的层次关系,来调整表格的布局。 8. 完善表格功能:可以根据具体需求,添加更多表格的功能,比如排序、过滤、搜索等。 9. 测试和优化:在表格制作完成后,可以进行测试,查看表格的显示效果和交互效果,并进行优化。 总之,使用Unity-UGUI制作表格,只需简单的操作和设置,就能够创建出各种样式、功能丰富的表格,满足游戏或应用程序的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值