Unity NGUI和UGUI与模型、特效的层级关系

目录

1、介绍两大UI插件NGUI和UGUI
2、unity渲染顺序控制方式
3、NGUI的控制
4、UGUI的控制
5、模型深度的控制
6、粒子特效深度控制
7、NGUI与模型和粒子特效穿插层级管理
8、UGUI与模型和粒子特效穿插层级管理

写在前面

这篇笔记是整理了之前做的记录,在做项目的过程中,遇到了各种各样的界面穿插问题,界面层级混乱,比如,手机卡了或点快了,就导致两个界面相互交叉。对于界面,这应该算是一个很严重的bug,很大部分原因是整个UI框架没有从整体上考虑这个,后来决心弄清楚层级的控制,并把一些对于目前项目可行的方法应用,界面穿插的问题少了很多,注意我只是在现有的框架打的补丁。如果是一个从头开始,在架构UI的时候,这篇笔记应该会很有用。

以前项目使用的NGUI插件,UI是有一个人摆放的,我们客户端就拿到这些prefab,添加相应的逻辑脚本。但恰恰是这个摆界面的人也没有注意界面的层级,各个panel、各个widget的depth没有统一管理,导致开发中后期,界面一多起来,很多界面同时出现的时候,panel和widget的层级就乱了。

unity有哪些GUI框架

  1. unity自带的GUI系统
    一般都不用它来开发游戏,作为拓展unity编辑器开发比较多,unity自带的GUI效率非常低,每次渲染都是一个DrawCall,不好用,不能做到所见即所得。

  2. unity4.6之后的UGUI
    UGUI是NGUI作者参与开发的,unity官方的新UI系统,感觉挺好用的,至于效率问题应该比NGUI好些。5.x以后ugui有很大的提升,以后ugui应该会逐步替代ngui。
    很早之前就尝试过这套ugui系统,正是我在研究界面层级的时候,用NGUI显示模型粒子特效没有找到好的方法时,于是探索了ugui,具体怎么控制层级,后面会讨论。

  3. NGUI
    是一个老牌的unity UI插件了,在ugui没有推出之前,大部分unity的游戏都使用的NGUI插件开发UI,它的好处很多,提供了常见的UI控件,实现几乎所有需要的功能,在效率上也是控制严谨,DrawCall合并极大提升了控件渲染效率,还支持3D GUI。但是也有很多不足,版本更新太频繁,版本bug很多,对于了解NGUI的开发者可以很好利用它,但对于初学者来说,NGUI固然容易上手好用,但是对DrawCall的重建规则不了解,仍然会效率低下(后面会整理一下分析NGUI的笔记)。

  4. FairyGUI
    最近发现的一款跨平台UI编辑器,组合各种复杂UI组件,以及为UI设计动画效果,无需编写代码,可以一键导出Unity,Starling,Egret, LayaAir,Flash等多个主流应用和游戏平台。

    特性:
    所见即所得。操作简易,使用习惯与Adobe系列软件保持一致,美术设计师可以轻松上手。
    在编辑器即可组合各种复杂UI组件,无需编写代码。不需要程序员编码扩展UI组件。
    强大的文本控件。支持动态字体,位图字体,以及BMFont制作的位图字体,支持HTML语法和UBB语法,支持图文混排。
    强大的列表控件,支持多种布局,支持虚拟列表和循环列表,即使列表项目数量巨大也拒绝卡顿。
    支持图片的九宫格和平铺处理,支持图片变色和灰度,支持序列帧动画编辑和使用。
    内置手势支持。
    提供时间轴设计UI动效,可实时看到每帧的位置或其他效果。
    编辑状态下使用分散的素材,发布时自动打包图集。支持定义多个图集,自动支持抽出A通道的压缩方式。
    多国语言支持。
    各种分辨率自适应。
    提供插件机制,可以根据项目的需要为编辑器加入个性功能。
    为各个游戏平台提供了一致的API,得益于编辑器强大的编辑功能,程序员只需要了解少量API就能完成UI展现,相比Feathers, NGUI, UGUI等UI框架,FairyGUI提高了UI制作效率,降低了成本。

当然不止这些,还有许多UI框架,比如:Daikon Forge GUI、EZ GUI、2dTookit等等,有时间可以看看,但目前主要用到的还是NGUI、UGUI啦。

为什么要关心渲染顺序?

  1. 如果是2D游戏,渲染顺序关系着每个层次的显示先后,比如UI在游戏内容前面,游戏内容又有多层次。举一个简单的例子,在横版2D游戏中,经常会用到多层滚动的背景,把游戏物体分层管理起来,可以有效的减少出错几率,很好的控制显示效果。

  2. 对于3D游戏,游戏内容是3D的,UI一般是2D,有很多时候需要把某个模型啊,粒子特效啊,放在界面上,这样就有一个问题,3D物体和2D界面的先后关系,比如有些界面是在模型之上的,有些在下面,尝试过很多种办法,都能实现需求,但不是每种办法都是那么舒服的。

unity中控制渲染顺序的方式

  1. Camera
    Camera是unity中最优先的渲染顺序控制。depth越大,渲染顺序越靠后。

  • 18
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值