首页 > 其他分享 >UI(一) - NGUI和UGUI比较

UI(一) - NGUI和UGUI比较

时间:2023-03-20 13:06:02浏览次数:69  
标签:层级 -- UI 组件 UGUI NGUI


UI是游戏项目中重要的组成部分,面对一个从零开始的项目,首先要确立的就是选用哪个UI系统作为主框架。

===

现在主流项目中基本上都是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更多的自动化的便利,
  • 从组件支持度来看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也有源码开放,只是不能随意定制,只是在此基础上扩展和重载。

标签:层级,--,UI,组件,UGUI,NGUI
From: https://blog.51cto.com/u_136836/6132584

相关文章

  • Unity3D 小案例技巧04------UI登录+场景切换
    编辑器使用Unity20211.创建UI---Canvas,修改名称为login设置Canvas的大小为1920*1080      2. 在login下创建UI----image  背景:bg给背景添加背......
  • elementUI el-tree setCheckedKeys使用nextTick出现的问题
    [Vuewarn]:ErrorinnextTick:"TypeError:Cannotreadpropertiesofundefined(reading'setCheckedKeys')"TypeError:Cannotreadpropertiesofundefined(read......
  • iview Input 必填不能未空 不能输入空格 v-model.trim required: true
    iviewInput必填不能未空不能输入空格v-model.trimrequired:true需求测试在验证必填的时候,会输入一个空格,本着空格不算内容的原则,会提一个bug解决方案v-model.tr......
  • Druid连接池配置参考
    <beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close"><!--基本属性url、user、password-->......
  • Qt 生成uuid方法
    chatgpt结果#include<QUuid>#include<QDebug>intmain(){//生成一个新的UUIDQUuiduuid=QUuid::createUuid();//将UUID转换为字符串,并打印输出......
  • APPUIM安装环境
    APPUIM安装环境先准备好 1、安装node.js,是一个Javascript运行环境(runtimeenvironment)。运行node-v10.16.0-x64.msi验证安装完毕:打开程序面板,如有node.js即可......
  • fastadmin 自定义build_toolbar按钮
    fastadmin自定义build_toolbar按钮何渊渊于2020-09-2311:13:31发布1930收藏4分类专栏:fastadmin文章文章标签:javascriptphp版权fastadmin同时被2个专栏收......
  • 04:SwiftUI-网络图片
      正文 importSwiftUIstructWebImagePage:View{@StateprivatevarbaseImage:UIImage?=nilletplaceHolderImage=UIImage(named:"ico......
  • vue+element-ui刷新路由的时候保持在当前页面小技巧
    前言:很多小伙伴在练习vue项目的时候会遇到这样一个问题,就是刷新页面的时候,路由没有显示到当前页面,而是重定向回首页了,那么该怎么解决呢,就请各位小伙伴看下面的内容介绍吧......
  • .NET中的winform、wpf、winui和maui你都知道吗?
    前言    年初.NET工程师的求职者反馈不好找工作,尤其是B/S开发,C/S开发稍微好点。这种情况下有好多小伙伴都想转行了,于是了解了一下JAVA,比.NET还卷,还是走.NET内部转行吧......