【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也有源码开放,只是不能随意定制,只是在此基础上扩展和重载。

相关推荐
NRatel16 小时前
亚马逊S3的使用简记(游戏资源发布更新)
游戏·unity·amazon s3
SmalBox1 天前
【渲染流水线】[几何阶段]-[屏幕映射]以UnityURP为例
unity·渲染
SmalBox2 天前
【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
unity·渲染
SmalBox3 天前
【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
unity·渲染
霜绛3 天前
Unity:GUI笔记(一)——文本、按钮、多选框和单选框、输入框和拖动条、图片绘制和框绘制
笔记·学习·unity·游戏引擎
谷宇.3 天前
【Unity3D实例-功能-移动】角色行走和奔跑的相互切换
游戏·unity·c#·unity3d·游戏开发·游戏编程
17岁的勇气3 天前
Unity Shader unity文档学习笔记(十九):粘土效果,任意网格转化成一个球(顶点动画,曲面着色器)
笔记·学习·unity·图形渲染·顶点着色器·曲面着色器
benben0444 天前
《Unity Shader入门精要》学习笔记一
unity·shader
YF云飞4 天前
Unity图片优化与比例控制全攻略
游戏·unity·游戏引擎·游戏程序·个人开发
SmalBox4 天前
【渲染流水线】[几何阶段]-[几何着色]以UnityURP为例
unity·渲染