【Unity入门】NGUI和UGUI比较

目录

现在主流项目中基本上都是NGUI和UGUI,那么到底选哪个,我们先来做个比较
图集处理功能比较
NGUI需要使用工具手动拼接图片成图集。
UGUI开发期间可以直接使用图片作为元素,打包时会自动拼接成图集。

图集的alpha拆分功能,NGUI可以通过增加工具类和shader来做,UGUI有自带的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比较

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更多的自动化的便利,

从组件支持度来看NGUI更适合快速原型,而UGUI更多的是需要自己编写适合自己的组件。

从UI底层可定制度上看,两者都是可定制的,但NGUI更加方便。

从输入事件处理上看,NGUI混合了物理系统,而UGUI有一套自己独立的事件系统。

从层级显示上看,NGUI概念有点混淆,而UGUI层级概念清晰干净。

从字体制作上看,NGUI麻烦了点,而UGUI更加方便。

从社区完善上看,NGUI更加商业化,而UGUI有官方支持后台强大。

从性能上比较看,NGUI臃肿了点但尚可,而UGUI更加良好。

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

如何选择适合你的GUI

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

Unity3D 4.x的项目通常会选择NGUI,因为Unity3D 4.x对UGUI支持的并不好。而如今新项目都会选择使用最新版本的Unity3D,所以选择UGUI的会多一点。我们需要与时俱进跟随潮流,所以如果你没有尝试过UGUI,熟悉UGUI应该是迟早的事。铁了心要做一个决定是用NGUI还是用UGUI,我的建议是,新项目启用UGUI,老项目继续使用NGUI。

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

相关推荐
天人合一peng5 小时前
unity 生成标记根据背景色标记变色
unity·游戏引擎
天人合一peng9 小时前
unity 生成标记根据背景色变色为明显的颜色
unity·游戏引擎
魔士于安9 小时前
Unity 超市总动员 超市收银台 超市货架 超市购物手推车 超市常见商品
游戏·unity·游戏引擎·贴图·模型
CandyU29 小时前
Unity —— 数据持久化
unity·游戏引擎
zh路西法9 小时前
【Unity实现Oneshot胶卷显形】游戏窗口化与Win32API的使用
游戏·unity·游戏引擎
迪捷软件10 小时前
显控系统虚拟仿真的工程化路径
游戏引擎·cocos2d
凡情14 小时前
android隐私合规检测
android·unity
小贺儿开发14 小时前
Unity3D 本地 Stable Diffusion 文生图效果演示
人工智能·unity·stable diffusion·文生图·ai绘画·本地化
Swift社区15 小时前
传统游戏引擎 vs 鸿蒙 System 架构
架构·游戏引擎·harmonyos
mxwin1 天前
Unity Shader 半透明物体为什么不能写入深度缓冲?
unity·游戏引擎·shader