基本规则主要有以下几条:按照层叠顺序处理 层叠顺序是按照Hierarchy中的顺序从上往下进行的,也就是越靠上的组件,就会被画在越底部 图A处理后和图B相同 图集Batch规则 计算层级号的算法:如果有一个UI元素,它所占的屏幕范围内(通常是矩形),如果没有任何UI在它的底下,那么它的层级号就是0(最底下);如果有一个UI在其底下且该UI可以和它Batch,那它的层级号与底下的UI层级一样;如果有一个UI在其底下但是无法与它Batch,那它的层级号为底下的UI的层级+1;如果有多个UI都在其下面,那么按前两种方式遍历计算所有的层级号,其中最大的那个作为自己的层级号。 合并批次:如果相邻间的两个批次正好可以Batch的话就会进行Batch 注:图集的穿插并不是指Hierarchy中的树形结构上的,即使树形结构存在穿插的情况,但是图片之间并没有遮挡情况的,不算图集的穿插 Z轴的影响 Unity以Canvas为单位进行绘制,按照前两条规则,当遍历列表进行处理时,如果列表中有X元素Z轴不为0,则处理会被打断,X元素之前的归为一个处理批次,X元素以及X元素之后的元素归为一个处理批次 举例列表{A, B, C, D, E, F}中C的Z轴不为0,那么会从C处开始被打断,列表的处理被强行拆分为两个列表{A, B}和{C, D, E, F} Text优先级高于Image 按照规则2,ImageA层级号为0,ImageB层级号为1(ImageA和ImageB可以Batch),TextC层级号为0,绘制顺序为: TextC,ImageA,ImageB (FrameDebugger中为两个DM)