《Unity3D高级编程之进阶主程》第四章 UI(一) - 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源码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也有源码开放,只是不能随意定制,只是在此基础上扩展和重载

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 19:50:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 19:50:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 19:50:04       58 阅读
  4. Python语言-面向对象

    2024-07-12 19:50:04       69 阅读

热门阅读

  1. 如何部署本地dockers镜像源

    2024-07-12 19:50:04       19 阅读
  2. CAD二次开发(12)- 块的定义和使用

    2024-07-12 19:50:04       17 阅读
  3. MySQL在Windows系统上的详细安装指南

    2024-07-12 19:50:04       17 阅读
  4. ubuntu 换源

    2024-07-12 19:50:04       24 阅读
  5. Elasticsearch进阶学习

    2024-07-12 19:50:04       15 阅读
  6. 面向对象进阶基础练习

    2024-07-12 19:50:04       21 阅读
  7. RGB树-美团2023笔试(codefun2000)

    2024-07-12 19:50:04       25 阅读
  8. python输出/sys/class/power_supply/BAT0/电池各项内容

    2024-07-12 19:50:04       19 阅读
  9. ArcGIS Pro SDK (八)地理数据库 6 版本控制

    2024-07-12 19:50:04       23 阅读
  10. SpringBoot使用手册

    2024-07-12 19:50:04       18 阅读