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

38 篇文章 3 订阅

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。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值