游戏项目推荐
  • 【三】递归算法
    【三】递归算法
    编程语言中,我们习惯将函数(方法)调用自身的过程称为递归,调用自身的函数称为递归函数,用递归方式解决问题的算法称为递归算法。
  • 【二】时间复杂度和空间复杂度
    【二】时间复杂度和空间复杂度
    算法本身是不分“好坏”的,所谓“最好”的算法,指的是最适合当前场景的算法。挑选算法时,主要考虑以下两方面因素:时间复杂度和空间复杂度。
  • 【一】算法是什么
    【一】算法是什么
    提到“算法”,很多人都觉得它高深莫测、晦涩难懂。事实上的确存在一些算法,学员必须具备优秀的数学基础和编程能力才能驾驭。
  • 【十一】排序算法
    【十一】排序算法
    排序是程序设计中常做的操作,初学者往往只知道冒泡排序算法,其实还有很多效率更高的排序算法,比如希尔排序、快速排序、基数排序、归并排序等。
  • 【十】表查找解
    【十】表查找解
    查找表又可分为静态查找表和动态查找表。借助静态查找表可引申出顺序查找算法、折半查找算法、分块查找算法等;而记住动态查找表,也可以通过构建二叉排序树、平衡二叉树等实现查找操作。
  • 【九】动态内存管理
    【九】动态内存管理
    动态内存管理机制,主要包含两方面内容,用户申请内存空间时,系统如何分配;用户使用内存空间完成后,系统如何及时回收。
  • 【八】图和图存储结构
    【八】图和图存储结构
    玩转数据结构的图,就必须稳扎稳打,死抠图结构的每一个知识点,每一行代码,只有这样,才有彻底学会图存储结构的可能。
  • 【七】树和树存储结构
    【七】树和树存储结构
    树存储结构中,最常用的还是二叉树,本章就二叉树的存储结构、二叉树的前序、中序、后序以及层次遍历、线索二叉树、哈夫曼树等,详细介绍二叉树。

Unity3D编程之NGUI和UGUI比较

5599

现在主流项目中基本上都是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源码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的比较。

Unity3D编程之NGUI和UGUI比较_UGUI框架-游民部落(gamecolg.com)

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


特别声明:本文仅供交流学习 , 版权归属原作者,并不代表游民部落赞同其观点和对其真实性负责。若文章无意侵犯到您的知识产权,损害了您的利益,烦请与我们联系vmaya_gz@126.com,我们将在24小时内进行修改或删除。

相关推荐:

游戏编程推荐
  • 【二十八】游戏UI之UI界面管理
    【二十八】游戏UI之UI界面管理
    游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理游戏UI界面之UI管理
  • 【二十七】游戏UI之透视相机模式规划
    【二十七】游戏UI之透视相机模式规划
    游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划游戏UI界面之透视相机模式规划
  • 【二十六】游戏UI之正交相机模式规划
    【二十六】游戏UI之正交相机模式规划
    游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面之正交相机模式规划游戏UI界面
  • 【二十五】游戏UI之NGUI和UGUI简介
    【二十五】游戏UI之NGUI和UGUI简介
    游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介游戏UI界面NGUI和UGUI简介
  • 【二十四】Lua与C、C++间模块交互
    【二十四】Lua与C、C++间模块交互
    Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互Lua与C、C++间模块交互
  • 【二十二】Lua游戏配置内存优化策略
    【二十二】Lua游戏配置内存优化策略
    Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略Lua游戏配置内存优化策略
  • 【二十三】Lua模块和Unity引擎C#模块间交互
    【二十三】Lua模块和Unity引擎C#模块间交互
    Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互Lua模块和Unity引擎C#模块间交互
  • 【二十一】Lua内存开销规划和优化策略
    【二十一】Lua内存开销规划和优化策略
    Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略Lua内存开销规划和优化策略