Unity3D UGUI系列之合批_unity ui合批-CSDN博客
只有出现在相机的UI才会被Batches
根据测试 这个Canvas有一个网格出现在相机,那这个canvas所有的UI都会算入Batches
合批规则 计算深度=>按照materialID textureID 按照Hierarchy 最后根据排名的 材质和纹理进行合批
计算Depth
i.不渲染,则Depth = -1
ii.要渲染,下面没有其他UI元素与其相交,则Depth = 0
iii.如果CurrentUI要渲染,下面只有一个UI元素(LowerUI)与其
相交
(1)且CurrentUI与LowerUI可以合批(材质和贴图完全相同),则CurrentUI.Depth = LowerUI.Depth;
(2)如果两者不能合批,CurrentUI.Depth= LowerUI.Depth + 1
iv.如果CurrentUI要渲染,下面有n个元素与其相交,则按照步骤iii,分别计算出n个Depth(Depth_1、Depth_2、Depth_3…),然后CurrentUI.Depth取其最大值,即CurrentUI.Depth = max(Depth_1, Depth_2, Depth_3,…)
bottomUI判断
A是B的bottomUI需要满足:(单条只是必要条件,1、2、3
合起来才是充分条件)
B的mesh构成的矩形和A的mesh构成的矩形有相交,注意不是RectTransform的矩形相交,这点需要认真理解一下,
下面给出一组案列帮助大家理解。
A.siblingIndex < B.siblingIndex (即在Hierachy里A在B之上)
如果B有多个UI满足1、2条规则,则B的bottomUI应取siblingIndex差值的绝对值最小的那个(有点绕哈,
depth的案例有这种情况)