UGUI图片层级和渲染顺序的奇怪关系
之前见别人的文章总是说,在Hierachy下,相同图集的图片要连续排列,这样Unity会对相同图集的图片进行合批,从而减少draw call。今天做了简单的试验发现情况并不是这么简单的。 第一种情况: 如上图所示,在Hierachy下图片层级从低到高分别是(p,+,+),得到draw call为2。 第二张情况: 如上图所示,在Hierachy下图片层级从低到高分别是(+,p,p),得到draw call为3。 第三种情况: 如上图所示,在Hierachy下图片层级从低到高还是(+,p,p),只不过我把p的图片由瓶子换成了一个鸡蛋,其实就是换了一个图集,得到draw call为2。 目前总结来的结论应该是这样的,如下图所示,A,B两张图应该是先渲染的,因为它们分别处于更远的depth,C是后渲染的,因为它处于更近的depth。但是A和B谁先渲染决定与它们使用的图集,这个优先级在我刚刚举的三个例子中应该是 瓶子图集 > 加号图集 > 鸡蛋图集。所以在下图中 A和B应该是先渲染A,所以渲染顺序是 A(瓶子) - B(加号) - C(瓶子),无法合批,一共三次draw call。但是如果把瓶子换成鸡蛋,那么A和B应该是先渲染B,所以渲染顺序是 B(加号) - A(鸡蛋) - C(鸡蛋),后两次鸡蛋可以合批,一共两次draw call。 但是在上图的情况下,我们稍稍改变B的pos.z