【Unity3D】【NGUI】【2.7版本之前】层级问题呀层级

NGUI讨论群:333417608

本文意在解释,为什么在2.7版本之前,总会出现某些label看不到,或者覆盖出现问题

希望通过描述下基本原理,让大家了解到出问题的原因


NGUI是如何节省dc(draw call)的?

合并所有用到的图片到一个大的texture下,这样就尽可能的减少material的数量(material是产生dc的主要原因)

为什么我的label看不到?调整Z轴的话,要不所有label都看到,要不所有label都看不到?

这个问题一般出现在你复杂的UI中,仅仅用了一个Panel的时候。

比如UI的渲染层次结构是SpriteA(AtlasA)>LabelA(AtlasB)>SpriteB(AtlasA)>LabelB(AtlasB)。

这个时候,因为AtlasA用的MaterialA,AtlasB用的MaterialB,导致这个Panel里面的理论Material顺序就是:

MaterialA>MaterialB>MaterialA>MaterialB

但是Panel里面对于每个Material只会计算一次,所以真正的顺序就是MaterialA>MaterialB或者MaterialB>MaterialA。

这就是产生问题的原因。

如何解决?

增加panel后调整Z轴。比如上面的例子,你可以在SpriteB(AtlasA)>LabelB(AtlasB)的父节点上增加一个Panel。

这是最方便的方法。

这样会增加dc,但是没有不增加dc的解决办法。使用3.0不会有这个问题,是因为3.0会自动在Panel里面进行material的拆分,还是会增加dc。


你可能感兴趣的:(【Unity3D】【NGUI】【2.7版本之前】层级问题呀层级)