NGUI学习笔记汇总

2023-11-14

NGUI学习笔记汇总,适用于NGUI2.x,NGUI3.x

一.NGUI的直接用法

1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加。(注:用Component添加无效)。

2. Attach an Anchor:表示为该物体添加了UIAnchor脚本,作用是避免像素偏移的问题

3. Attach UIStretch:表示为该物体添加了UIStretch脚本,提供缩放功能

4. Make Pixel Perfect:表示自动为你调整Transform的尺寸

5. Create a Panel:表示创建一个面,相当于一个容器,里面的Button,Label,CheckBox控件全部包含在Panel里面

6. Create a Widget:表示创建一个窗口小部件,比如Button,Label,Sprite等

7. Create a New UI:表示创建一个新的UI界面

8. Font Maker:创建字体

9. Atlas Maker:创建图集

二.Component/NGUI /Examples

1.PanWithMouse,表示你赋予的该物体会根据鼠标的变换而移动(漂浮的感觉)

2.LookAtTarget,表示该物体朝向你的目标物体(Target)

3.LoadLevelOnClick,表示点击按钮后加载到另外一个场景,在LevelName写上你所要加载的场景名即可

4.Spin,旋转

5.SpinWithMouse,跟着鼠标旋转

6.TypewriterEffect,作用于标签,打字风格

7.Chat Input,将输入框里面的内容提交到文本框里面去

三.Component/NGUI/Interaction

1.Button

A:UIButton:鼠标放到按钮上,改变目标物体的颜色

B:UIButtonScale:鼠标放到按钮上,目标物体变大或缩小,在Hover下调节x,y,z的比例

C:UIButtonOffset:鼠标放到按钮上,目标物体挪动位置

D:UIButtonSound:鼠标点击按钮,发出声音

E:UIButtonActivate:鼠标点击按钮后,目标物体由禁用状态到启用状态(触发该物体)

F:UIButtonColor:鼠标移动至按钮后,目标物体变颜色

G:UIButtonRotation:鼠标移动至按钮后,目标物体旋转一定的度数,在Hover下调节x,y,z旋转的度数

H:UIButtonTween:鼠标点击了按钮后,目标物体产生变换,必须给目标物体添加Tween组件里面的变换(例:transform变换,position变换,Alpha变换等等),并在开 始enable目标物体的变换,因为此变换是在点击鼠标后才产生,要不然就会在开始运行游戏的时候,它就产生变换了

I:UIButtonPlayAnimation:鼠标点击按钮后,目标动画播放(必须为目标物体添加Animation)

J:UIButton Message:传递消息,写一个公共函数,告诉你所要传递消息的内容,将此脚本放到你的目标物体上,然后写上你所要传递消息的函数名字

2.CheckBox

A:UICheckBox:用于多选框的选择与取消

B:UICheckBoxControlledObject:如果取消这个多选框的选择,那么目标物体以及所有子物体全部被禁用

C:UICheckBoxControlledComponent:若添加此脚本到CheckBox中,如果选择了该多选按钮,那么此脚本的Target将被显示,如果没有选择该多选按钮,那么此脚本的Target将被隐藏

3.Drag

A:UIDragCamera:为某个物体添加该组件,然后为Camera添加UIDraggableCamera组件,表示该摄像机允许被拖拽,然后将此摄像机放到UIDragCamera的目标摄像机下,拖拽该物体,摄像机的位置就会改变

B:UIDraggableCamera:表示该摄像机是允许被拖拽的

C:UIDraggablePanel:表示该面(容器)是允许被拖拽的

D:UIDragObject:拖动该物体,被允许拖拽的物体会被拖拽,在此被允许拖动的物体必须放到目标物体之下

E:UIDragPanelContents:表示该面的所有组件也是允许被拖拽的

4.其他

A:UIForward Events:表示从对象到另一个转发事件(还需要详细了解)

B:UIGrid:表示为该物体添加网格,在该物体下可以包含许多的Item,在Arrangemwnt中可以选择竖直或者水平排列,Cell Width和Cell Height代表每个单元格的宽度和高度

C:UICenterOnChild:常用于拖拽事件中,给Panel添加UIDraggablePanel脚本,然后给你想要拖拽的物体添加UIDragObject或者是UIDragPanelContents,然后给网格根目录添加UICenterOnChild,不管如何拖动容器里面的物体,网格始终保持水平或垂直居中状态

D:UIInputValidator:用于输入框中(Input),给输入框添加此脚本后,在Logic有多种选择,None代表没验证,任何字符都可以输入(汉语除外),Integer表示只能输入整数,不能输入英文以及各种特殊字符,Double表示只能输入浮点数,Alphanumeric表示什么英文和数字和特殊字符都可以输入,Username表示可以输入英文、数字,一些特殊字符(小数点除外),Name表示只能输入英文和特殊字符(小数点除外)

E:UIPanelAlpha:可用于任何控件,添加此脚本给物体,在Alpha中可以调节参数,0表示全透明,0-1表示越来越不透明,1以上的数字表示完全不透明

F:UIPopupList:用于下拉列表框(PopupList),通过NGUI创建PopupList控件时,就添加了此脚本,在Options中可以添加下拉列表框的子项

G:UIScrollBar:用于滚动条,Value表示当前滚动条的位置,Size表示一个滚动条的一个单元大小,Alpha表示滚动条的透明度,Direction可以选择滚动条是垂直状态还是水平状态

H:UISlider:用于滑动框,Value表示此滑动框被填充的比例,Direction表示可以选择滑动框是垂直的还是水平的

I:UISoundVolume:用于Slider控件中……

J:UITable:添加表格,Columns表示此表格的列数,Down表示一列里面的控件从上往下排列,Up表示一列里面的控件从下往上排列,Padding表示各个控件的距离

四.Component/NGUI /Tween

1.Spring Position:表示变换物体的位置,Target是目标位置,物体会从开始的位置,移动到目标位置处

2.Tween Alpha:表示物体的透明度从某一个值到另一个值,From表示开始的值,To表示之后的值

3.Tween Color:表示物体的颜色从某一个值到另一个值,From表示开始的颜色,To表示之后的颜色

4.Tween Position:表示物体的坐标从一个位置到另一个位置,From表示开始的位置,To表示之后的位置

5.Tween Rotation:表示物体从一个角度到另一个角度的变换,From表示开始的角度,To表示之后的角度

6.Tween Scale:表示物体的大小从某一个值到另一个值的变换,From表示开始的大小,To表示之后的大小

7.Tween Transform:表示物体的Transform变换,From表示开始的物体位置,To表示之后的物体位置

五.创建控件NGUI/Create a Widget

A:创建标签:Label

B:创建下拉列表框:Popup List

C:创建进度条:Progress Bar

D:创建滑动条:Slider

E:创建输入框:Input

F:创建滚动条:Scroll Bar

G:创建按钮:Button

H:创建多选框:CheckBox

I:创建精灵

    精灵也就是从一张大的图集中获取一个小的图片

    Sprite:一般的精灵

    Sliced Sprite:带有固定边框的精灵

    Tiled Sprite:缩放重复填充整个区域的精灵(例如铁丝网)

    Filled Sprite:每个都会有一个单独的参数来控制那些可见的,常用于滚动条和进度条

J:创建输入框:Input

六.NGUI事件系统

NGUI事件函数可以写入NGUI控件脚本,或者带有碰撞器的物体(被带有UICamera组件的相机渲染)的脚本。

常用事件

void OnHover (bool isOver):鼠标悬停或移出时触发。悬停时传入true,移出时传入false。

void OnPress (bool isDown)::鼠标或触摸按下或松开时触发,按下时传入true,松开时传入false。

void OnClick():鼠标或触摸单击(按下并释放)时触发。

void OnDoubleClick () :双击(双击时间间隔小于0.25秒)时触发。

void OnSelect (bool selected):类似单击,区别在于选中一次之后再选中将不再触发OnSelect事件,除非期间选择了其他控件。
void OnDrag (Vector2 delta):鼠标或触摸按下并移动时触发。delta为传入的位移。

void OnInput (string text):只用于输入控件,每次输入完成后触发,text传入本次输入的信息,而非输入控件中的文本信息。
void OnTooltip (bool show):鼠标悬停一段时间或移开时触发,悬停时传入true,移开时传入false。

void OnScroll (float delta):鼠标中键滚动时触发,delta为传入的滚动增量。

七.常用相关变量

UICamera.currentTouchID  UICamera类变量,用于区分鼠标按下的键位,-1为左键,-2为右键,-3为中键

UICamera.lastHit      UICamera类变量,RaycastHit类型。用于获取被触发的物体。

UICamera.lastTouchPosition    UICamera类变量,用于获取鼠标或触摸的位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NGUI学习笔记汇总 的相关文章

  • 唯一索引或主键违规:“PRIMARY KEY ON PUBLIC.xxx”; SQL语句

    每当我的应用程序启动时 我都会收到以下错误消息 Caused by org h2 jdbc JdbcSQLException Unique index or primary key violation PRIMARY KEY ON PUBL
  • 菜单未显示在应用程序中

    由于某种原因 我的操作菜单在我的 Android Studio 应用程序中消失了 我正在按照教程学习如何创建 Android 应用程序 但最终遇到了这个问题 我正在使用 atm 的教程 http www raywenderlich com
  • 在 JTable 中移动行

    我使用 MVC 模式 并且有一个如下所示的 JTable List
  • 如果测试用例失败,Selenium Web 驱动程序无法关闭 Firefox 实例

    我各位 我正在使用 junit 和 selenium web 驱动程序 2 28 问题是 如果我运行成功的测试用例 Web 驱动器能够关闭 Firefox 实例 但是当测试用例失败时 Selenium Web 驱动器无法关闭 Firefox
  • Java程序中的数组奇怪的行为[重复]

    这个问题在这里已经有答案了 我遇到了这个 Java 程序及其以意想不到的方式运行 以下程序计算 int 数组中元素对之间的差异 import java util public class SetTest public static void
  • IntelliJ IDEA 创建的 JAR 文件无法运行

    我在 IntelliJ 中编写了一个跨越几个类的程序 当我在 IDE 中测试它时它运行良好 但是 每当我按照教程将项目制作成 jar 可执行文件时 它就不会运行 双击 out 文件夹中的文件时 该文件不会运行 并显示 无法启动 Java J
  • java.io.IOException: %1 不是有效的 Win32 应用程序

    我正在尝试对 XML 文档进行数字签名 为此我有两个选择 有一个由爱沙尼亚认证中心为程序员创建的库 还有一个由银行制作的运行 Java 代码的脚本 如果使用官方 认证中心 库 那么一切都会像魅力一样进行一些调整 但是当涉及到银行脚本时 它会
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • Clip 在 Java 中播放 WAV 文件时出现严重延迟

    我编写了一段代码来读取 WAV 文件 大小约为 80 mb 并播放该文件 问题是声音播放效果很差 极度滞后 你能告诉我有什么问题吗 这是我的代码 我称之为doPlayJframe 构造函数内的函数 private void doPlay f
  • 在具有相同属性名称的不同数据类型上使用 ModelMapper

    我有两节课说Animal AnimalDto我想用ModelMapper将 Entity 转换为 DTO 反之亦然 但是对于具有相似名称的一些属性 这些类应该具有不同的数据类型 我该如何实现这一目标 动物 java public class
  • 如何将文件透明地传输到浏览器?

    受控环境 IE8 IIS 7 ColdFusion 当从 IE 发出指向媒体文件 例如 mp3 mpeg 等 的 GET 请求时 浏览器将启动关联的应用程序 Window Media Player 我猜测 IIS 提供文件的方式允许应用程序
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

    我正在开发 Spring Hibernate MySql 应用程序 该应用程序尚未投入生产 我目前使用 Hibernatehbm2ddl该功能对于管理域上的更改非常方便 我也打算用Flyway用于数据库迁移 在未来的某个时候 该应用程序将首
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐

  • 使用computed_VUE中computed计算属性和data数据获取的问题

    获取到数据 对象 数组 截取一部分显示到页面中 用computed计算属性来实现截取数据然后直接输出到页面 div class detailBox h1 class detailHead ActiveData title h1 div cl
  • c语言检测使用方法,一种基于程序切片技术的C语言死代码检测方法与流程

    本发明涉及恶意代码分析领域 主要涉及一种基于程序切片技术的C语言死代码检测方法 背景技术 随着互联网的广泛普及 现今的计算机网络也面临着越来越多的攻击威胁 在众多网络安全问题中 恶意代码所造成的安全危害愈发严重 恶意代码分析成了安全人士关注
  • 机器学习西瓜书——第05章神经网络

    本文是关于周志华老师编写的机器学习书籍 西瓜书 的第五章神经网络 主要的内容有 M P神经元模型的构成 简单感知机和多层网络 以及著名BP算法的推导过程 激活函数是Sigmoid 文章目录 5 1 神经元模型 工作过程 激活函数 5 2 感
  • [Filco]蓝牙连接键盘

    第一次用蓝牙键盘 断连后的重连太痛苦了 蓝牙里搜不到键盘 搜到了PIN码不知道输入什么 不输入PIN码连接 Filco方法 控制面板 设备和打印机 点击 添加设备 搜索到 Filco 点击下一步 尝试从设备输入 对着数字敲 然后Enter就
  • Docker之Alpine制作镜像且上传至阿里云

    Alpine制作jdk镜像 alpine Linux简介 Alpine Linux是一个轻型Linux发行版 它不同于通常的Linux发行版 Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗 alp
  • 8位深, 16位深,24位深,32位深图片显示原理及对比

    我们都知道一张图片可以保存为很多种不同的格式 比如bmp png jpeg gif等等 这个是从文件格式的角度看 我们抛开文件格式 看图片本身 我们可以分为8位 16位 24位 32位等 单击右键 属性 gt 详细信息即可查看图片位深度 8
  • ijkplayer-android编译 兼容多视频格式

    用的播放器框架是ijkplayer 然后就去https github com Bilibili ijkplayer的issue里找答案发现很多人遇到了这个问题 最终还是想通过编译定制化so的方式解决 践行解决方案 按照官方文档编译andro
  • Mybatis-代码走查问题整理

    实践篇 1 和 的区别 直接替换变量 有sql注入风险 使用场景 当表名 字段名作为变量传入时 PreparedStatement 预处理编译 先替换为 然后赋值 添加单引号 2 使用注解和xml文件sql的方式区别 注解 简单明了 无需额
  • Doris之Binlog Load

    Binlog Load Binlog Load提供了一种使Doris增量同步用户在Mysql数据库的对数据更新操作的CDC Change Data Capture 功能 适用场景 INSERT UPDATE DELETE支持 过滤Query
  • Qt6教程之三(3) QtWedget自定义控件

    在之前的博客中 我们使用的控件都是Qt官方提供的 对于控件的特性也只能被动地接受 为了打破这种束缚 可以按照自己的想法来定义控件 不过自定义控件必须遵守Qt官方的一套自定义控件规则 在规则之下我们就可以定义属于我们自己的控件啦 QWidge
  • 输出比较实验

    转载链接 输出比较 输出比较就是通过定时器的外部引脚对外输出控制信号 输出比较的模式有哪些 可以设置为以下几种不同的模式 翻译如下 000 冻结 输出比较寄存器TIMx CCR1中的内容与计数器TIMx CNT中的内容之间的比较对输出无影响
  • jquery ajax 无效字符,【JQuery】 ajax 无效的JSON基元

    如题 个人理解就是 你向传数据 josn格式 了 但是后台接受确不是json格式的 数据 贴段代码 var strJson usercode 123 password 123 ajax type POST url Index doLogin
  • CentOS7下安装 mysql5.7.25(glibc版)(可用)

    一 安装前的检查 1 检查 linux 系统版本 root localhost cat etc system release 2 检查是否安装了 mysql mysql 有三种安装方式 二进制包安装 RPM包安装 源码装 3 系统内存检查
  • c++的cout输出

    1 c 的cout输出顺序是从左往右进行输出 但是是从右往左压入栈 2 c 的cout的输出是遇到函数是若函数内右cout的操作则立即执行 3 不同编译器对相同语句的编译规则是不一样的 所以最好不要对同一变量进行多次的修改 也不用深究 没有
  • go语言如何编译为可执行文件

    使用系统自带的cmd找到main函数所在位置 1 go build go即可把go程序编译成exe文件 2 go run go就可以运行go程序了 3 便宜源代码 官方说使用go build fileName 编译出来的就直接带有调试信息了
  • bash: ifconfig: 未找到命令 解决方案

    解决思路 1 ifconfig 命令存在的情况 首先查看 ifconfig 命令在哪个目录下 顺便检查是否安装了这个命令 whereis ifconfig 然后查看 echo PATH PATH 中是否包含了这个目录 一般情况下是不包含的
  • 前端开发都需要掌握那些技术?

    前端技术多且杂 那么作为前端开发者 我们可以从那些方面进行进阶提升呢 本文从以下几个方面进行了整理归纳 内容如下 一 网页开发 二 小程序 三 移动端 四 桌面端 五 其他技术 一 网页开发 这里指PC端网页开发 要求的技术主要有以下几类
  • 华为OD机试(JAVA)真题 -- 最长(连续)子串

    import java util Scanner 给定一个字符串 只包含字母和数字 按要求找出字符串中的最长 连续 子串 字符串本身是其最长的子串 子串要求 只包含 1 个字母 a z A Z 其余必须是数字 字母可以在子串中的任意位置 如
  • shell自动部署docker及docker-compose

    一 准备环境 centos7 6及centos7 9已通过测试 测试时服务器刚刚完成初始化 未修改任何配置 可以直接运行脚本进行安装 要求主机可以访问互联网 yum环境在脚本中已自动准备 将两个脚本直接复制放到root目录下 赋予可执行权限
  • NGUI学习笔记汇总

    NGUI学习笔记汇总 适用于NGUI2 x NGUI3 x 一 NGUI的直接用法 1 Attach a Collider 表示为NGUI的某些物体添加碰撞器 如果界面是用NGUI做的 只能这样添加 注 用Component添加无效 2 A