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更多的自动化的便利,
从组件支持度来看NGUI更适合快速原型,而UGUI更多的是需要自己编写适合自己的组件。
从UI底层可定制度上看,两者都是可定制的,但NGUI更加方便。
从输入事件处理上看,NGUI混合了物理系统,而UGUI有一套自己独立的事件系统。
从层级显示上看,NGUI概念有点混淆,而UGUI层级概念清晰干净。
从字体制作上看,NGUI麻烦了点,而UGUI更加方便。
从社区完善上看,NGUI更加商业化,而UGUI有官方支持后台强大。
从性能上比较看,NGUI臃肿了点但尚可,而UGUI更加良好。
如何选择适合你的GUI
选择你熟悉的,尝试你不熟悉的比较后再做决定。
Unity3D 4.x的项目通常会选择NGUI,因为Unity3D 4.x对UGUI支持的并不好。
如今新项目都会选择使用最新版本的Unity3D,所以选择UGUI的会多一点。
新项目启用UGUI,老项目继续使用NGUI。
希望在源码基础上进行更多的自定义的修改,然后完善成自己的系统框架,更好的服务于游戏逻辑,或者拥有更好的性能定制,那么最好的选择就是NGUI。不过UGUI也有源码开放,只是不能随意定制,只是在此基础上扩展和重载。