鉴于ngui的层级关系有点复杂,今天我们就看看ngui 层级关系处理

项目中做到复杂一些的界面,经常会用到多个图集,以技能界面为例,项目中常用的图片放到共用图集中, 这是一个图集,技能界面本身独有的元素,比如跟技能职业相关的背景,算作第二个图集,还有一些技能图标, 标单独归类到一个图集中,再一个就是字体的图集。

基本一个界面如此分法,最多需要4个图集。NGUI的图集之间的 处理,默认是靠调整控件的Z值来区分的,但是这里他可以调整同一个图集每个一个控件的Z值,其实不是很好。经常会出现图层相互遮挡的情况,尤其对于控件比较多的界面,一段时间回过来再修改界面的时候,整个要崩溃。

我的做法是。在UIPanel中,为每一个Material添加一个layer的变量,当同一图层靠depth来决定前后关系,不同图层靠 layer来决定前后关系,在绘制UIDrawCall的时候,根据layer对跟节点做一定偏移。这样就能从Z值中解放出来。

如果大家也有碰到图层的问题,可以参考这样的做法,以此种方法来处理图层关系,简单,做过项目的圈套UI,还未有不能解决的情况。

上传一张效果图
ngui 层级关系处理


如果需要代码参考,后续会将实现一起发上来