在游戏开发过程中,UI系统的开发虽然看似简单,但是想要高效稳健的实现各种效果的UI系统确是一件繁琐的事情。其中涉及到的UI管理、资源的加载/卸载、特效/3D模型的层级管理、UI动画的实现方式、数据的管理、各种消息的分发等等,这些都是在UI系统开发过程中常见的问题。

目前市面上绝大部份Unity开发的游戏中都是使用UGUI或NGUI作为其GUI系统,前者是Unity官方自带并且长期维护的,后者在UGUI没有出现时就已经诞生。这两款GUI系统各有千秋,两者都提供了一些基础组件,但是在游戏开发过程中,出于美观或性能考虑,你可能需要实现各种各样的UI效果,比如:翻书效果、图文混排、滚动效果、虚拟列表等等,这些在原生的UGUI和NGUI中并不自带。当然通过扩展UGUI或NGUI也是可以实现这些功能的,但是对于一个想要快速上线的项目时间就意味金钱。一款功能齐全好用的GUI组件库对于UI开发来说不亚于侠客的神兵利器。下面推荐几款好用的Unity GUI插件。

1.UnityUIExtensions

顾名思义UnityUIExtensions就是UGUI的扩展插件,并且此插件开源免费,作为UGUI的扩展包,不仅增强了UGU的某些原生组件,更是在此基础上增加了许多新组件。

新增UI组件:

  • Accordion:Acordian 样式的控件,使用动画片段。
  • ComboBox:组合框控件。
  • HSVPicker:颜色选取器 UI。
  • SelectionBox:RTS 样式选择框控件。
  • HorizontalScrollSnap:弹性滚动列表。
  • UIButton:改进的按钮控件与其他事件。
  • UIWindowBase:可拖动窗口的实现。
  • ComboBox:对于文本的固定组合框实现。
  • AutoCompleteComboBox:自动完成选择文本组合框。
  • DropDownList:一个基本的下拉列表中的文本和图像支持。
  • BoundToolTip:工具提示。

Effect 组件

  • BestFitOutline:改进的轮廓效果。
  • CurvedText:Text顶点manipulator。
  • Gradient:适用于任何UI对象的顶点颜色渐变。
  • LetterSpacing:允许 finers 文字间距控件。
  • NicerOutline:另一个outline 控件。
  • RaycastMask:强化的mask 组件能够处理的图像数据的一个例子。启用对映像部件并不只是Rect Transform。
  • UIFlippable:图像组件,翻转图形效果。

Additional 组件

  • ReturnKeyTrigger:
  • TabNavigation:选项卡导航。
  • FlowLayoutGroup:更高效的网格样式布局组。

还有更多其他组件就不在这里一一展示了,插件下载链接:

https://bitbucket.org/UnityUIExtensions/unity-ui-extensions/wiki/Home

2.Doozy UI

Doozy UI是Unity UI视图层的框架,本身使用的还是UGUI的组件,但提供了一套强大的UI管理功能,可以很方便的实现一些炫酷效果,方便的UI系统管理与事件传递机制。

Button事件绑定

可以方便的实现UI群组的管理,实现多个UI的互斥与切换。

UI 元素的分类与命名

相对于Unity原生的GUI系统Doozy UI有以下优点:

  • 使用本地uGUI
  • 简单易学,直观的设计
  • 高级编辑器集成
  • UI动画系统
  • 用户界面导航系统
  • UI效果,用户界面内的ParticleSystems
  • 用户界面通知系统
  • 用户界面触发器,零代码
  • 场景加载器

下载链接:

https://assetstore.unity.com/packages/tools/gui/doozyui-complete-ui-management-system-138361

UI 元素的分类与命名

相对于Unity原生的GUI系统Doozy UI有以下优点:

  • 使用本地uGUI
  • 简单易学,直观的设计
  • 高级编辑器集成
  • UI动画系统
  • 用户界面导航系统
  • UI效果,用户界面内的ParticleSystems
  • 用户界面通知系统
  • 用户界面触发器,零代码
  • 场景加载器

下载链接:https://assetstore.unity.com/packages/tools/gui/doozyui-complete-ui-management-system-138361​assetstore.unity.com

3.FairyGUI

严格来说FairyGUI并不是Unity的插件,而是有着自己独立编辑器的一套GUI系统,几乎支持市面上绝大多数游戏引擎,社区支持也算不错。

FairyGUI编辑器
  • 编辑器使用习惯与Adobe系列软件保持一致,对于美术也可以轻松上手。
  • 并且包装了一些概念,使得界面瓶装十分方便,如关联=>屏幕适配 、控制器=>状态控制等等。
  • 提供了丰富的组件,几乎涵盖游戏内所有常用效果。内置了一些游戏内常用效果:Loading、预告、强调等等。
  • 解决了一些UI中常见问题,特效裁剪、模型裁剪等等。
  • 自带图集支持Alpha通道分离,在贴图压缩和机型兼容上可以直接应用到。
  • 相对于UGUI和NGUI提出的动静分离的DrawCall优化方案,FairyGUI优化技术是动态后期优化,在制作时对UI人员基本没有要求。(在实际测试过程中使用UGUI和FairyGUI制作相同的界面,FairyGUI的DrawCall只有UGUI的1/3,但是Saved by batching却是后者的3倍,FairyGUI的文档中提到“深度调整技术”就是提交顶点数据到GPU前先通过CPU将材质调整到连续的RenderingOrder值上,虽然降低了GPU的使用但是却消耗了CPU的使用)

总的来说FairyGUI作为一款优秀的游戏GUI系统,一旦熟悉了它的工作流程,UI开发会变得非常方便,由于FairyGUI是使用AS3开发的,配合上psd2fgui工具,可以很方便的从美术的PSD原图一键生成FairyGUI文件,极大提升开发效率。

FairyGUI官网:

https://www.fairygui.com/

其他

除了以上提到的Unity GUI系统外,还有一些非主流的方式实现的Unity GUI,比如使用HTML和CSS样式实现的GUI:PowerUI;将响应式编程应用到Unity中的插件:UniRx,虽然这并不是一套GUI系统,但是其设计思想对UI的开发却是友好的。

转自:https://zhuanlan.zhihu.com/p/84360558

发表评论

电子邮件地址不会被公开。 必填项已用*标注