NGUI必备概念和理论(一)【NGUI3.5.8】

15款用Unity开发iOS、安卓手机游戏的必备插件 本文介绍一些用Unity开发手机游戏一些必备插件。 1:Ultimate Mobile Pro 包含Unity与iOS和安卓原生api交互的插件,同时包含Admob插件,随意切换iOS和安卓部署,不需要更改任何代码。 下面三个插件为Ultimate Mobile Pro的子集。 B)iOS Native Pro(Ultimate Mobile Pro的子集,包含和iOS交互的插件 ) ... 阅读详情

Ps:角色换装那个例子,先淡定的等下吧,我们先补补基础的知识点。今天到公司没收到啥任务派发,那就与大家一起学习下NGUI这个东西吧。


本节将讲述NGUI的基础概念和理论,不知从何讲起,算了,我们就从创建一个UI的顺序来学起吧:



一、底层设计

UIRoot

UIRoot总是放在UI层级的最上层。它用来使UI的缩放变的更容易。Widget通常是以像素为单位的坐标。
UIRoot有几种缩放形式,最为常用的就是PixelPerfect。什么意思呢?它的意思是UI永远以像素作为单位进行缩放,比如你的UI是200 * 100的大小,那么它将永远占用屏幕的尺寸是200 * 100个固定像素面积。这样的设置将优先保证UI的清晰度。但是这样会出现一个问题,就是在低分辨率的机子上UI将会变的粗糙很大,而在高分辨率的机子上将显得非常的小。
FixedSize是一个和它功能正好相反的设置。通俗一点就是占用固定的百分比。比如说有一个200 * 100的UI在1024*768上是占用25%的大小,那么即使在其他分辨率上也是占用同等百分比的区间。如果你的UI不关心尺寸变化且也不关心是否清晰,可以选择这个缩放形式。这个选项记得设置Manual Height。

如果你不需要自动缩放功能,直接去掉这个组件就可以了。

FixedSizeOnMobils缩放选项,集成了PixelPrefect和FixedSize组合。这个选项将在PC上使用像素缩放形式来表现,在手机上使用百分比缩放形式。
注意:
如果没有选择FixedSize,那就要设置Minimum Height和Maximum Height选项,这些值让你的虚拟屏幕看起来在合理的范围内。比如你选择了PixelPerfect,
Minimum Height设置为了720,那么这个时候当有玩家将你的游戏运行在了800 * 600 的设置上时(即,高度低于720的时候),你UI的行为就和设置了“Fixed Size”、Manual Height为720的时候一样的效果了。

UIRoot是以 2 / ScreenHeight 的值进行缩放。这个ScreenHeight可能是实际的屏幕高度,也可能是Manual Height(Fixed Size)。这样做的目的是使渲染UI的Camera的Orthographic Size的值一直使用1。

UICamera


NGUI里边的这个摄像机用来接收NGUI控件的事件响应。需要把UICamera这个脚本挂在主摄像机上。
游戏场景里边可以有多个UICamera。大多数游戏,一个挂在渲染Widgets的摄像机上,一个挂在渲染游戏的摄像机上。
UICamera组件中的Event Type用来决定脚本如何排序mouse或者touch触发的事件。如果选择的模式是UI,那么事件响应的顺序依赖于Deptch深度值;如果UICamera挂在了主摄像机上,那么需要将Event Type选择成World模式,这将根据objects距离摄像机的远近来触发事件。
UICamera组件中的Event Mask是事件响应的具体作用域。比如UI层,比如Water等等。
UICamera组件中的Debug,是用来调试用的,勾选上它,当你运行点击的时候,在屏幕的右上角将显示当前是哪个东西被点击了。
UICamera组件中的Allow -Multi Touch,控制是否支持多点触碰。
UICamera组件中的Thresholds,用来微调鼠标和Touch事件的行为。
UICamera组件中的Axes和Keys,用来设置哪个轴控制哪个方向上的移动。

UICamera可以接收的事件很多:
  • OnHover (isOver) 发送时机为鼠标悬停(只触发一次)或者离开collider。
  • OnPress (isDown) 发送时机为鼠标在collider上按下。
  • OnSelect (selected)发送时机为鼠标点击和松开的时候都在同一个object上。
  • OnClick ()发送时机和OnSelect一样,但是要求鼠标没有移动特别多。UICamera.currentTouchID表示按下的鼠标哪个键。
  • OnDoubleClick ()发送时机为当在四分之一秒内click两次的时候。UICamera.currentTouchID表示按下的鼠标哪个键。
  • OnDragStart ()发送时机为OnDrag()事件之前。
  • OnDrag (delta) 发送时机为一个object被拖拽。
  • OnDragOver (draggedObject)发送时机为其他的object拖拽到他的上面。
  • OnDragOut (draggedObject)发送时机为其他的object拖拽出他的上面。
  • OnDragEnd ()发送时机为drag事件结束。发送给被拖拽的object。
  • OnInput (text)发送时机为输入的时候(在点击选择了一个collider之后)。
  • OnTooltip (show) 发送时机为鼠标悬停在一个collider上一段时间没有移动。
  • OnScroll (float delta)发送时机为鼠标滚轮滚动。
  • OnKey (KeyCode key)发送时机为键盘或者输入控制器被使用的时候。

UIStretch


该组件专门来做这样的事情:就是当前控件绑定上了UIStretch组件,其大小会根据UIStretch中的Container的大小进行对应的大小变化。(Ps:比较白话啊,谅解。)上图:

注意:将Label控件中的UIStretch组件中的Container设置为Button的背景图片,之后选择Both风格,最后设置下Border Padding(随便写)。OK,好了。这个时候你再调整背景Background大小无论如何变化,这个时候你的Label大小,也会随着进行相应的大小变化。

UIAnchor

该组件人如其名,就是提供了可以固定在屏幕某个位置的方法。具体就不多说了,很简单。

二、中层设计

NGUI控件设计架构图,如下:

从UML图中可以看出NGUI的基类是UIRect,下面派生出两个分支UIPanel和UIWidget。UIPanel作为容器可以将UIWidget下的组件进行整合;UIWidget下派生出NGUI的各式各样的组件:UI2DSprite、UILabel、UISprite和UITexture,这几个基础组件进行重组可以实现丰富多彩的UI控件效果。

UIRect

UIRect矩形类是个抽象类,包含了UIPanel和UIWidget所需的基础的功能函数。一个UIRect包含4个基本的锚点信息,它可以保证组件的更新顺序。这里换句通俗的解释便是,定义矩形的4个顶点。

UIPanel

UIPanel用来管理下面的Widget组件。通过Widget的geometry来创建实际的draw call。没有Panel所有的东西都不会被渲染出来。现在,每个Panel都有一个深度值了(Depth),会影响下面包含的Widget。如果你的UI有很多窗口,那么最好每个窗口都有一个Panel。这样,UIPanel的Depth权重影响效果远远大于下面各个Widget的Depth权重效果,所以保证所有的Panel的Depth不一样为佳;倘若你的Panel使用同样的Depth,那么draw call将会自动拆分来保证渲染顺序,这样会增加更多的draw call的数目。




说下常用的选项吧:

Alpha :这个值可以影响该Panel下的所有Widget,所以可以用这个东西实现淡入淡出的效果。

Depth :上面说过了不赘述了。

Clipping :裁剪区域。

Normals:如果想让UI接受灯光的影响,对其进行勾选。

Cull :如果你的UI是一个有很多几何信息的滚动效果的Panel,勾选这一选项,可以减少三角形的数目。当然这样做有可能影响性能,因为每一次的Update都会去检查    Widget的可视性。

Static :这个选项将导致NGUI忽略所有的Position/Rotation/Scale的变化,提高性能。除非你的UI不可移动的时候才适合使用这个选项。

Show Draw Calls:选项可以看到所有的 Draw Call 详细信息。


新版本的NGUI后面的Panel自动加了一个Rigidbody选项,这个将提升Unity性能。

UIWidget

从UML架构图上可以看出UIWidget是所有的NGUI控件的基类,即最基本的信息定义类。UIWidget就是个白色矩形选框,在运行的时候是不可见的,如下图所示:
注意它也有个深度Depth,这个值越大,表面越靠前显示和接受事件越优先。此外,鼠标右键在UIWidget内点击,会出现如下菜单列表:
在【Select】中显示的控件顺序就是渲染的顺序,你也可以添加各种组件等其他操作。

参考资料:
http://tasharen.com/ngui/docs.html
http://blog.youkuaiyun.com/u012091672/article/list/2
http://www.tasharen.com/forum/index.php?board=12.0

NGUI 3.0.0工具手册 NGUI 3.0.0工具手册英文文档。 立即下载

相关推荐

用矿卡P104-100在PVE 8.0.4上跑Ollama:保姆级显卡直通与驱动安装避坑指南

本文详细介绍了如何在PVE 8.0.4环境下通过显卡直通技术,利用矿卡P104-100高效部署本地大模型Ollama的全流程。从硬件配置、BIOS设置到驱动安装和性能调优,提供了保姆级的避坑指南和实战解决方案,特别针对矿卡无显示输出的特殊性进行了优化。

weixin_33228769的博客 761

NGUI UIWidget组件

在Unity游戏开发中,用户界面(UI)对于提供信息、控制游戏功能以及增强玩家体验至关重要。NGUI(Next-Gen UI)是一个流行的UI系统,它为Unity带来了一系列强大的UI组件,而UIWidget是这些组件中的一个基础元素。本文将探讨UIWidget的作用、特性以及如何使用它来丰富你的Unity项目中的UI设计。

Unity打怪升级 1287

BMS菊花链芯片怎么选?一张表对比ADI、TI、NXP五大厂家的隔离通信方案

本文深入对比了ADI、TI、NXP等五大厂商的BMS菊花链芯片隔离通信方案,涵盖技术演进、核心参数和场景化选型策略。通过实测数据和开发经验分享,帮助工程师在新能源汽车和储能系统中选择最优方案,提升通信可靠性和成本效益。

weixin_33724046的博客 433

NGUI基础-Widget

在Unity UI系统中,"Widget"是指UI元素的基类,它为UI元素提供了位置、大小和锚点等基本属性。通过使用"Widget"组件,我们可以对UI元素进行布局、缩放和旋转等操作,并且还能够响应不同尺寸和分辨率的屏幕。只不过,panel的Depth是管理不同面板的。Widegt的Depth是管理同一面板下不同控件的,比如同一面板下不同的sprite。定义UI元素变换中心的位置,通过改变这些箭头和方块来改变中心的位置,对应的Transform信息也会改变。层级越大,越后渲染,就越显示在前面。

m0_71469414的博客 903

✔B【AD623】【单运放】仪表放大器 AD623电压放大器模块可调 单电源 单端/差分 微小信号

【】仪表放大器 AD623电压放大器模块可调 单电源 单端/差分 微小信号

童话与梦的博客 8290

海康VisionMaster表面缺陷滤波实战:从参数调优到工业检测避坑指南

本文深入探讨海康VisionMaster表面缺陷滤波技术在工业检测中的应用,从参数调优到ROI绘制与Blob分析的协同策略,提供金属外壳、锂电池铝壳等复杂表面的缺陷检测实战指南。通过多级滤波架构和动态ROI生成法,显著提升检出率至98.7%,误检率低于0.5%,为工业质检提供智能化解决方案。

ujm5678901的博客 330

【Unity3D】【NGUI】UIWidget

原文:http://www.tasharen.com/forum/index.php?topic=6702.0 概述 UIWidget是NGUI的基础组件。简单来说,就是一个你可以放在屏幕任意位置的矩形框。widget会有一定的面积(如下图的白色框范围),但是在运行的时候(Game View)是完全不可见的,所以非常适合当做其他组件的容器。 UIWidget 也被用来当做所有

Daniel 的专栏 6909

STM32F407控制舵机

STM32F407控制舵机运行 使用STM32F407控制舵机,首先来看下舵机图片 [黑红白,黑线接GND,红线接VCC,信号线接白色线(有的舵机线的颜色不同,例如褐色红色橘色,仅颜色不同接法还如上述)] 舵机需要信号的周期为20ms,即频率为50Hz。 接下来正式操作: 步骤一:STM32F4程序(本次程序的PWM信号产生的周期频率由定时器TIM14通道1产生(TIM14_CH1),想要使用其它定时器也没关系下面会讲到) #include "pwm.h" void TIM14_CH1_PWM_In

Ievn_Hare的博客 1万+

Unity3D之NGUI说明书(转)

原文地址:http://www.csdn 1 2 3.com/html/itweb/20131025/187998.htm NGUI学习笔记 一、 NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加。(注:用Component添加无效)。 2. Attach an Anchor:表示为该物体添加...

dawei80316的博客 245

电力工程师必看:GOOSE/SV/MMS三协议在智能变电站中的分工与联动实例

本文深入解析了智能变电站中GOOSE、SV、MMS三大核心通信协议的分工与协同机制。GOOSE协议作为过程层的“闪电信使”,负责毫秒级传输跳闸命令等事件信息;SV协议则传输精确同步的电流电压采样值流;而MMS协议作为站控层的“管理语言”,实现设备监控与数据管理。三者基于IEC 61850标准,在过程层、间隔层和站控层之间高效联动,共同构建了智能变电站稳定可靠的通信骨架。

jj890的博客 370

锐捷-GZ073 网络系统管理赛项赛题第1套A模块-S5配置

锐捷-GZ073 网络系统管理赛项赛题第1套A模块-S5配置

weixin_46183247的博客 768

NGUI之UIWidget

UIWidget相当于一个容器,程序运行时不可见。UISprite/UILabel/UITexture等都继承自它! 另外,值得注意的是:EmptyObject添加了Collider是不能够检测碰撞事件的;而UIWidget添加了Collider时,是可以检测到碰撞事件的····

成长ing中的w的专栏 1016

【绝对要收藏-优秀论文范文】高项-度量绩效域

摘要:本文基于某水库数字孪生平台建设项目(2022.9-2023.5,645.97万元)的管理实践,从信息系统度量绩效域角度展开论述。项目构建了包含防洪调度等6大子系统的数字平台,实现洪水"四预"功能。重点分析了度量绩效域的五大要点:制定有效指标(如成本±8%偏差阈值)、多维数据采集、预警临界值设定、基于趋势的主动干预和持续改进机制。特别阐述了绩效问题的诊断方法,包括设备采购全周期成本分析、阶段性成本报告制度等。项目状态展示采用三维可视化看板,集成进度、成本、质量等多维度实时数据,最终实

xylllamm的博客 349

NGUI必备概念和理论(二)【NGUI3.5.8】

在上一篇中,我们一起学习了NGUI的最为核心的

LGFEngine 1853

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Unity插件-NGUI

1. 基本使用 NGUI -> 选项 -> Reset Perfab Toolbar,显示预制体UI组件,可以直接拖拽到场景中。 使用NGUI,必须要有一个UIRoot作为父组件 在场景中的UIRoot中右键单击,然后点Create来创建组件。 注意:必须将Panel展开,否则无法进行该操作 ...

qq_50682713的博客 1175

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NGUI 相关插件总结

NGUI 3.8.2 - 开发者必备的GUI制作插件 http://www.narkii.com/club/thread-358262-1.html   NGUI: HUD Text v1.13 - NGUI辅助插件 http://www.narkii.com/club/thread-358259-1.html FastGUI 3.0 for NGUI http

开心 1918

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

关于Unity中NGUI的Tab商城、Scrollview和打字机效果的实现

Tab商城实例 UIToggle 和 UIToggledObjects+ Box Collider(实现商城功能必备) 1.创建两个个UI Sprite,Sprite1和Sprite2 2.给Sprite1和Sprite2都添加UI Toggle组件和UI Toggled Objects组件,设置UI Toggle组件中的Group值一样,归为同一组,这样只能有一个被选择,就像男女只能选一个,再勾...

weixin_34194087的博客 260

NGUI 3.8.0 - 开发者必备的GUI制作插件

http://pan.baidu.com/s/1sjqLhtb 密码:3dc6 需要Unity4.5.5或更高版本——可运行Unity5.0 Beta版本 转载于:https://www.cnblogs.com/tylear/p/4302829.html

weixin_30950607的博客 139

Unity3D项目开发十大必备插件

  2D Toolkit 2D Toolkit是一组与Unity环境无缝集成的工具,提供高效的2D精灵和文本系统。 热门指数:★★★★★ NGUI: Next-Gen UI kit NGUI是严格遵循KISS原则并用C#编写的(适用于专业版和免费版)插件,提供强大的UI系统和事件通知框架。 热门指数:★★★★☆ iTween插件的介绍和用法 iT...

iteye_8084的博客 489

Unity3D十款最火的的插件推荐

作为当前最主流的3D游戏引擎之中的一个。Unity拥有大量第三方插件和工具帮助开发人员提升工作效率。我们摘选了十款最受欢迎的工具推荐给大家。类别包括2D开发、UI设计、原型制作、着色、特效等,涉及了游戏开发最基本的十个方面。 1. 2D Toolkit 假设过去你一直从事3D游戏开发,近期想转做2D游戏,...

weixin_30722589的博客 1006

Unity插件

作为当前最主流的3D游戏引擎之一,Unity拥有大量第三方插件和工具帮助开发者提升工作效率。我们摘选了十款最受欢迎的工具推荐给大家,类别包括2D开发、UI设计、原型制作、着色、特效等,涉及了游戏开发最主要的十个方面。1. 2D Toolkit如果过去你一直从事3D游戏开发,最近想转做2D游戏,最好尝试一下2D Toolkit。2D Toolkit是一款2D开发组件,它具有很强的灵活性和适应性,能够...

sally7²⁰²¹ 636

Unity3D项目开发热门必备插件

2D ToolKit 2D Toolkit是一组与Unity环境无缝集成的工具,提供高效的2D精灵和文本系统。 官方地址:https://www.assetstore.unity3d.com/en/#!/content/908 NGUI:Next-Gen UI Kit NGUI是严格遵循KISS原则并用C#编写的(适用于专业版和免费版)插件,提供强大的UI系统和事件通知框架 官方地址:h

猫叔的专栏 4164

Unity 3D引擎:十大最火的插件推荐

作为当前最主流的3D游戏引擎之一,Unity拥有大量第三方插件和工具帮助开发者提升工作效率。我们摘选了十款最受欢迎的工具推荐给大家,类别包括2D开发、UI设计、原型制作、着色、特效等,涉及了游戏开发最主要的十个方面。 1. 2D Toolkit 如果过去你一直从事3D游戏开发,最近想转做2D游戏,最好尝试一下2D Toolkit。2D Toolkit是一款2D开发组件,它具有很强的

qq_28180261的博客 850

Unity Interview 关键

坚持一个真理:如果不懂,不清楚,不明白怎么去学,那就背吧,通通背下来,只要背下来,只要有理论,你就会明白,会清楚,会学到。 1.C#排序:冒泡排序,选择排序,插入排序(死死记住吧) 2.面试题(理论知识被的滚瓜烂熟) 3.常用UnityAPI函数熟练使用,知道作用(创个工程,放到U盘里,到哪里都带上,把API都用一遍,各种功能去尝试实现) 4.常用设计模式,设计模式的概念,设计模式的优缺点...

膜拜麻衣大神 247
上一篇: 程序员幽默
下一篇: NGUI必备概念和理论(二)【NGUI3.5.8】
LGFEngine
博客等级 码龄13年 6粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值