看这个问题的时候,先来两张图,一样的ui,只是有一个遮挡为啥batches数据增加了1
我们用framedebug来慢放,你会发现
很明显的,文字覆盖了,打断了合批的问题,而原来是可以先渲染图片image,在渲染文字的
ugui合批原理
UGUI在合批之前,会根据ui的Depth、MatID 、ImgID、RendererOrder进行排序,之后对相邻的UI进行检测,判断ImgID和MatID是否相同,如果相同则可以进行合批处理,如果这两个UI的MatID和ImgID都相同,但是不连续,中间有其他不同MatID或ImgID的UI则会打断合批。
Depht排序:
先筛选掉Depht为-1的值,这部分默认不渲染
接着判断是否该元素底部是否有物体,如果没有则赋值Depth为0,如果盖住物体(这块是通过Mesh进行判断,判断Mesh是否相交)则等于底部盖住的UI元素中Depth最大的值+1、
如果两个相邻元素通过了合批测试,则这两个相邻元素的深度值相等。
深度排序之后,就会根据matID进行排序,如果材质相同则对ImgID进行排序,如果也相同,那会根据inspection面板上的RendererOrder,最后真正进行UI的合批。