UGUI合批工具

关于ugui合批原理和规则不再重复,网上已经有不少资料来细致讲解了,这个工具就是根据之前大牛们的无私分享而诞生的,(PS: 我当时看的是这篇文章https://gameinstitute.qq.com/community/detail/112235)在了解了原理的基础上,我尝试实现了一个简单的合批工具,提供合批信息。

工具开发以及测试环境为unity2018,本文的资源来自于Asset Store下的Simple UI & icons,只不过我将图片打了图集,prefab中Image引用换成了图集。

操作如下:
执行菜单"Tools/UI/UIAssistant"打开工具界面,然后在Hierarchy界面选中需要显示信息的prefab点击Catch即可。

效果图如下:


1.png
2.png

每个结点输出信息均为以下结构:

3.png

对应表达信息为:
HierarychyOrder Name info:(Depth/MaterialID/TextureID) checkId BatchID
其中,当此结点没有与其他结点相同信息时,checkId没有
(补充,目前结点信息扩展为HierarychyOrder Name info:(Depth/MaterialID/TextureID/Mask/Mask2dID) checkId BatchID

代码就不解析了,毕竟原理理解了,实现就不是那么困难了, 主要合批函数在UIAssistantTools类中。

此工具的优点是能提供具体且明了的信息来告知开发者不可合批的原因,如depth不同,或material等不同导致无法合批,也绘制出了每个组件的显示范围,来确保更易理解Depth的计算以及计算过程中不被透明区域坑到。

最后说说这个工具存在问题的地方:
1.当ui为3d ui时,此工具不适用
2.存在一些bug, 有时间再修复(如mask裁剪不精确可能影响depth计算)

附上源码地址:https://github.com/gtgt154/UIAssistantTools

(其中TreeNode类参考于冗余资源排查工具工具https://github.com/cantry100/YLYFindUnUsedAsset
补充说明:我在计算信息前进行了判定该结点是否在UI层,若不在则不处理,所以如果正常操作却无信息输出,请检查这方面情况,当然也可以根据自身情况修改源码把此判定注释 )

你可能感兴趣的:(UGUI合批工具)