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

前言

本篇文章是整理在做项目的过程中,遇到了各种各样的界面穿插问题,以及界面层级混乱,比如,手机卡了或点快了,就导致两个界面相互交叉。

这里有个unity学习交流小组

对于界面,这应该算是一个很严重的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界面的先后关系,比如有些界面是在模型之上的,有些在下面,尝试过很多种办法,都能实现需求,但不是每种办法都是那么舒服的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity UI 旗帜可以理解为在Unity游戏引擎中使用的用户界面元素,用于展示和传递特定信息或功能。在开发游戏或其他交互应用程序时,UI 旗帜可以作为一个重要的组成部分。 首先,Unity UI 旗帜可以用于显示玩家的状态或信息。例如,在一个角色扮演游戏中,玩家可以在屏幕上看到他们的角色血条、能量条、经验条等信息,这些UI 旗帜可以实时反映角色的变化,并帮助玩家了解角色的状态。 其次,Unity UI 旗帜也可以用于菜单或选项界面,以便玩家可以与游戏进行交互或进行设置。玩家可以点击不同的UI 旗帜来选择游戏模式、音频设置、图形设置等。这些UI 旗帜可以提供直观的界面,使玩家能够轻松地进行操作和管理。 此外,Unity UI 旗帜还可以用于显示游戏中的任务或目标。比如,在一款冒险游戏中,玩家可以通过UI 旗帜来了解当前任务的进度、目标的位置等信息,从而引导他们在游戏中前进。 最后,Unity UI 旗帜还可以用于显示游戏中的提示或帮助信息。当玩家面临困难或不清楚下一步该做什么时,UI 旗帜可以提供相关的提示或帮助,使玩家能够更好地理解游戏规则或解决问题。 综上所述,Unity UI 旗帜在游戏开发中具有重要的作用,它可以用于显示玩家状态和信息、提供交互界面、显示任务和目标、以及提供提示和帮助。通过合理利用和设计,UI 旗帜能够提升游戏的交互性和用户体验,使玩家更好地享受游戏乐趣。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值