Unity UGUI如何计算drawcall

 

 看这个问题的时候,先来两张图,一样的ui,只是有一个遮挡为啥batches数据增加了1

我们用framedebug来慢放,你会发现

 

 

很明显的,文字覆盖了,打断了合批的问题,而原来是可以先渲染图片image,在渲染文字的

ugui合批原理

UGUI在合批之前,会根据ui的Depth、MatID 、ImgID、RendererOrder进行排序,之后对相邻的UI进行检测,判断ImgID和MatID是否相同,如果相同则可以进行合批处理,如果这两个UI的MatID和ImgID都相同,但是不连续,中间有其他不同MatID或ImgID的UI则会打断合批。

扫描二维码关注公众号,回复: 14591347 查看本文章

Depht排序:

    先筛选掉Depht为-1的值,这部分默认不渲染

    接着判断是否该元素底部是否有物体,如果没有则赋值Depth为0,如果盖住物体(这块是通过Mesh进行判断,判断Mesh是否相交)则等于底部盖住的UI元素中Depth最大的值+1、

    如果两个相邻元素通过了合批测试,则这两个相邻元素的深度值相等。

深度排序之后,就会根据matID进行排序,如果材质相同则对ImgID进行排序,如果也相同,那会根据inspection面板上的RendererOrder,最后真正进行UI的合批。

猜你喜欢

转载自blog.csdn.net/pengfeicfan/article/details/127232571