UGUI与NGUI

首先我们看一下NGUI

NGUI是严格遵循KISS原则并用C#编写的Unity(适用于专业版和免费版)插件,提供强大的UI系统和事件通知框架。其代码简洁,多数类少于200行代码。这意味着程序员可以很容易地扩展NGUI的功能或调节已有功能。对所有其他用户而言,这意味着更高的性能、更低的学习难度和更加有趣。完全集成到Inspector面板中。 不需要点击Play按钮就能查看结果。 在场景视图中看到的就是在游戏视图中得到的(所见即所得)。 基于组件的、模块化的特性:要让你的界面控件做什么,只需为其附加相应的行为,而不需要编码。 全面支持iOS/Android和Flash。 灵活的事件系统。 可以让复杂的UIs只占用一个draw call。

再看一下UGUI

UGUI即UnityGUI是官方的UI的实现方式,后来因为效率和可视化程度低,逐渐被NGUI和EzGUi等第三方插件替代。但是,在Unity4.6之后,又推出了新的uGUI系统,包括后面的5.x版本也都采用了这一新系统。UGUI还在不断完善,正在逐步追上NGUI的地位。


看完了这些,那我们来说说NGUI与UGUI的区别。

          1、UGUI的Canvas 有世界坐标和屏幕坐标

  2、UGUI的Image可以使用material

  3、UGUI通过Mask来裁剪,而NGUI通过Panel的Clip

  4、NGUI的渲染前后顺序是通过Widget的Depth,而UGUI渲染顺序根据Hierarchy的顺序,越下面渲染在顶层.

  5、UGUI 不需要绑定Colliders,UI可以自动拦截事件

  6、UGUI的Anchor是相对父对象,没有提供高级选项,个人感觉uGUI的Anchor操作起来比NGUI更方便

  7、UGUI没有Atlas一说,使用Sprite Packer

  8、UGUI的Navgation在Scene中能可视化

  9、UGUI的事件需要实现事件系统的接口,但写起来也算简单


图集方面

NGUI还保留着图集,需要进行图集的维护。而UGUI没有图集的概念,可以充分利用资源,避免重复资源

布局方面

NGUI在UIRoot下,通过锚点进行自适应,Grid,Table等布局组件,显示区域是PanelClip来实现的,进行paneldrawcall合并
UIGI出现了相对于父级的锚点的概念,更方便屏幕自适应

文本显示方面

UGUI只支持粗体,斜体,大小(可以一个控件内多个字体大小),颜色,其他的网上有(但是很少),但是都不太好用。
相对的NGUI还支持动态字体,下划线,删除线,超链接,角标,描边,阴影,渐变色支持表情符号,但需要将表情打入图集

控件方面

NGUI图集单个图片效果什么的只能对复制图集实现。而UGUI图集单个图片可以使用material。
动画方面
NGUI内部集成了Tween动画系统,也能用unity自带的动画系统,而UGUI也能使用第三方动画系统和自带动画系统。

渲染顺序方面

NGUI先根据Paneldepth进行排序,Panel再内部Depth排序。NGUI提供查看某个Panel drawcall占用情况的工具,方便进行drawcall调优。
UGUI采用Hierarchy层级和Z轴坐标来决定渲染顺序,越下面渲染在顶层.

最后是事件系统

NGUI通过每个空间上的BoxCollider来进行输入响应,UGUI在UI自动拦截输入,事件触发;提供各种接口

总结

UGUI由于是Unity原生支持的,所以使用上会更加的人性化。并且伴随着版本升级功能会越来越强,逐渐将成为主流ui方案。NGUI是ugui出现之前的产物,通过MeshRenderer来实现类似CanvasRenderer的功能,概念上有点蹩脚。作为一个插件虽然已最大努力让ui开发工作变得简单,但相比能够让UnityEditor做出相应修改的ugui(如RectTransform的出现),其易用性是没法比的。综合来说,新的项目建议使用uGUI,学习成本不高,工具流更有助于提高开发效率




你可能感兴趣的:(unity,ngui,UGUI)