Unity-UGUI合批优化
图集合批规则
计算层级号的算法:如果有一个UI元素,它所占的屏幕范围内(通常是矩形),如果没有任何UI在它的底下,那么它的层级号就是0(最底下);如果有一个UI在其底下且该UI可以和它Batch,那么它的层级号与底下的UI层级一样;如果有一个UI在其底下但无法与它Batch,那么它的层级号为底下的UI层级+1;如果有多个UI都在其下面,那么按前两种方式遍历计算所有的层级号,其中最大的那个作为自己的层级号。
合并时候:如果相邻间的两个批次正好可以Batch的话就会进行Batch。
Unity的UI渲染顺序的确定有2个步骤,第一步计算每个UI元素的层级号;第二步合并相同层级号中可以Batch的元素作为一个批次,并对批次进行排序;
例如1:Blue,Green,Orange三个图片,没有打包图集时候。
可以看到产生了三个DrawCall。原因:没有合并图集,需要CPU向GUI发送三次渲染请求。
例如2:Blue,Green,Orange三个图片,打包为一个图集
可以看到无论是否相交与否,都只产生了一个DrawCall。原因:三个图片都在同一个图集当中,渲染时候合批到一起,统一由CPU向GPU发送一次渲染请求即可