《Unity3D高级编程之进阶主程》第四章,UI(一) - NGUI和UGUI比较

UI是游戏项目中重要的组成部分,面对一个从零开始的项目,首先要确立的就是选用哪个UI系统作为主框架。

现在主流项目中基本上都是NGUI和UGUI,那么到底选哪个。我们先来做个比较。

===

图集处理功能比较

    NGUI需要使用工具手动拼接图片成图集。

    UGUI开发期间可以直接使用图片作为元素,打包时会自动拼接成图集。

    图集的alpha拆分功能,NGUI可以通过增加工具类和shader来做,UGUI则需要5.5以上版本支持才能实现,否则5.5以下版本很难实现,需要增加shader和额外贴图不说,光对层级的处理就已经很麻烦了,所以Unity3d 5.5以下版本真的可以说不建议使用alpha拆分。

组件支持功能比较

NGUI组件比较多,比较常用的有

    Localization System -- 多语言组件
    UIScrollView -- 滚动视图
    UIButton -- 按钮
    UIToggle -- 切换选择组件
    UIScrollBar -- 滚动条
    UIProcessBar -- 进度条
    UIPopupList --下拉列表菜单
    UIInput -- 输入框
    UIKeyBinding -- 快捷键绑定
    UIKeyNavigation -- 导航绑定
    UIGrid -- 排列
    UITable – 表格排列
    UIPlayAnimation -- UI动画
    UIAnchor -- 锚点
    UICamera -- UI摄像头
    UIDragXXX – 拖拽摄像头,元素,视图等
    UIFont – UI字体
    UILabel – 文字组件
    UIPanel – 绘制面板
    UIPlaySound – 声音播放
    UITexture – 贴图
    等等等等…还有很多

UGUI组件比较少

    Text – 文字
    Image – 贴图(图集中的元素)
    RawImage – 贴图(单张图)
    Button – 按钮
    Toggle – 切换与选择
    Slider – 大小滑动块
    Scrollbar – 滑动条
    Dropdown – 下拉框
    Input Field – 输入框
    Canvas – 画布
    Panel – 一大块元素
    Scroll View – 滑动视图
    Mask – 遮挡块

可定制程度

    NGUI有源码,可以随时随地修改满足特殊需求
    UGUI源码c#开源,可修改,但不是那么方便,需要重新打成dll后再替换原来的

输入事件处理

    NGUI通过摄像头发出射线碰撞,接受输入事件,并通过碰撞顺序来处理层级。
    UGUI根据输入点的位置RaycastTarget,判断事件应该交给哪个UI元素。

层级显示控制

    NGUI依靠Panel depth、RenderQueue来控制层级。
    UGUI可以依靠距离摄像机的前后位置来控制层级,也可以用sort order排序设置前后顺序。

字体制作

    NGUI不支持dynamic font。
    UGUI支持dynamic font,可直接使用字体文件

社区完善程度

    NGUI商业运营,氛围良好
    UGUI官方自运营,后台强大

性能

    NGU据很多测试网站统计,性能尚可
    UGUI同样,据很多测试网站统计,性能良好

好了,以上列出的是从几个方面对NGUI和UGUI的比较。

综合来看,NGUI和UGUI都各自有各自的特点,没有绝对好,也没有绝对的差,都各自有各自的特点,和擅长的领域,不分伯仲。针对不同的人群和项目有不同的选择。

如何选择适合你的GUI

适不适合,并不是绝对的,根据人和项目来分,上面分析过,NGUI和UGUI各自都有自己的特点,对每个人,每种情况来说都是不一样的。我的建议是选择你熟悉的,尝试你不熟悉的,比较后再做决定。

Unity3D4.x的项目通常会选择NGUI,因为Unity3D4.x对UGUI支持的并不好。而如今新项目都会选择使用最新版本的Unity3D,所以选择UGUI的会多一点。我们需要与时俱进,所以如果你没有尝试过UGUI,熟悉UGUI是迟早的事,早熟悉早好。

如果硬要说出,一个决定,是用NGUI还是用UGUI,我的建议是,新项目启用UGUI,老项目继续使用NGUI。没有对错,只是一个与时俱进的方法而已。

但也不一定是一个套路用到底,比如有些人就是喜欢把控源码,希望在源码基础上进行更多的自定义的修改,然后完善成自己的系统框架,更好的服务于游戏逻辑,或者拥有更好的性能定制,那么最好的选择就是NGUI。

感谢您的耐心阅读

Thanks for your reading

  • 版权申明

    本文为博主原创文章,未经允许不得转载:

    《Unity3D高级编程之进阶主程》第四章,UI(一) - NGUI和UGUI比较

    Copyright attention

    Please don't reprint without authorize.

  • 微信公众号