首先我们看一下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先根据Panel的depth进行排序,Panel再内部Depth排序。NGUI提供查看某个Panel drawcall占用情况的工具,方便进行drawcall调优。
UGUI采用Hierarchy层级和Z轴坐标来决定渲染顺序,越下面渲染在顶层.