Unity3D之UGUI学习笔记(三):EventSystem
在UGUI中,EventSystem实现了所有关于交互方面的功能,和NGUI不一样的地方是,我们终于可以摆脱添加Box Collider了!
下面我们来学习一下。
对于按钮来说,直接有onClick的事件,我们可以直接在编辑器中方便的通过拖拽来实现响应函数的赋值,这点和NGUI是一样的,如下:
代码使用onClick方法可以看这里:http://www.cnblogs.com/hammerc/p/4343618.html
Event Trigger
Event Trigger和NGUI中的Event Trigger功能保持一致,即使添加了该组件的GameObject获得可以支持按下、移入、移出等事件的能力,对应的NGUI的学习笔记可点这里:http://www.cnblogs.com/hammerc/p/4591933.html
我们可以给任意的对象添加Event Trigger使其拥有响应对应类型的输入的能力,如下:
我们发现其可以支持所有类型的输入事件:
事件响应的注册和onClick一致就不多说了。
支持任意物体
这点和NGUI一致,Event Trigger不仅支持Canvas内的UI,也支持场景中的所有物体。
下面我们看一下如果我想点击场景中的一个Cube该怎么办。
创建场景
我们创建一个新的场景,同时添加一个Cube,首先我们的要响应事件的GameObject都需要一个Collider,如下:
创建Cube自带的Collider,如果没有碰撞器则不能响应事件,这里Is Trigger是否勾选都可以响应输入事件。
添加Event Trigger
我们为Cube添加Event Trigger组件,同时设定好其鼠标点下时调用一个方法,如下:
脚本如下:
using UnityEngine;
using System.Collections; public class NewBehaviourScript1 : MonoBehaviour
{
public void PointDownHandler()
{
Debug.Log("Point Down!");
}
}
为Camera添加处理事件的脚本
显示的Cube要响应输入,必须为显示其的Camera添加响应物理世界的脚本Physice Raycastor,如下:
添加Event System
最后为场景添加一个Event System即可。
运行一下,小方块就可以支持点击响应了。
事件接口
UGUI为我们提供了一些接口,整理如下:
我们该如何使用这些接口呢?
示例
我们新建一个脚本并添加到Canvas中的一个Image上,脚本如下:
using UnityEngine;
using UnityEngine.EventSystems; public class ImageInteractive : MonoBehaviour, IPointerDownHandler
{
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log(eventData.button);
}
}
这里我们通过输出就可以获得点击的按钮是鼠标左键、中键还是右键了,当然PointerEventData还提供了更多的属性来使我们获得更多的点击信息。
注意:这些信息是单纯使用Event Trigger无法获得的,同时,使用接口的方式不用添加Event Trigger等其他的脚本。
唯一需要注意的就是:脚本必须添加到接收事件的GameObject之上。
通过使用接口,我们可以获得所有交互事件中更多的信息,使开发更复杂的交互变得更加轻松。
Unity3D之UGUI学习笔记(三):EventSystem的更多相关文章
- Unity3D之UGUI学习笔记(一):UGUI介绍以及Canvas
UGUI是Unity3D4.6官方提供的UI系统,支持2D和3D UI的开发. Unity3D UI史 OnGUI 在Unity4.6之前,官方提供的是OnGUI函数来开发UI界面,当然问题也比较多, ...
- Unity3D之UGUI学习笔记(二):Rect Transform与Anchor
Rect Transform 我们都知道,Unity3D中所有的GameObject都必须要携带一个Transform组件,且该组件无法移除,那么作为UI显示的GameObject则不是携带Trans ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
随机推荐
- JavaScript闭包示例
在下面的例子中,为什么点击所有的段落p输出都是5,而不是alert出对应的0,1,2,3,4. <html> <head> <meta charset="utf ...
- ActivityManager: Warning: Activity not started, its current task has been brought to the front 的的问题
运行android程序的时候提示:ActivityManager: Warning: Activity not started, its current task has been brought t ...
- jfinal框架教程-学习笔记(一)
JFinal 是基于 Java 语言的极速 WEB + ORM 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java 语言所有优势 ...
- HDU 4607 Park Visit (DP最长链)
[题目]题意:N个城市形成一棵树,相邻城市之间的距离是1,问访问K个城市的最短路程是多少,共有M次询问(1 <= N, M <= 100000, 1 <= K <= N). [ ...
- POJ 2388 Who's in the Middle (快速选择算法:O(N)求数列第K大)
[题意]求数列中间项. ---这里可以扩展到数列第K项. 第一次做的时候直接排序水过了= =--这一次回头来学O(N)的快速选择算法. 快速选择算法基于快速排序的过程,每个阶段我们选择一个数为基准,并 ...
- IOS的XML文件解析,利用了NSData和NSFileHandle
如果需要了解关于文档对象模型和XML的介绍,参看 http://www.cnblogs.com/xinchrome/p/4890723.html 读取XML 上代码: NSFileHandle *fi ...
- poj 3160 Father Christmas flymouse
// 题目描述:从武汉大学ACM集训队退役后,flymouse 做起了志愿者,帮助集训队做一些琐碎的事情,比如打扫集训用的机房等等.当圣诞节来临时,flymouse打扮成圣诞老人给集训队员发放礼物.集 ...
- 苹果iphone4s完美越狱后破解4g网络方法
苹果iphone4s完美越狱后破解4g网络方法教程 作者:佚名 字体:[增加 减小] 来源:互联网 时间:01-15 10:07:25我要评论 自从港版iPhone5s/c能够破解移动4G网络后, i ...
- Oracle EM 不能访问
zwt2001267 原文 Oracle EM 不能访问 1. cmd控制启动EM: C:\Users\Administrator>emctl start dbconsoleEnvironmen ...
- hadoop2.0中无法启动datanode的问题
问题描述:在启动datanode进程时,能成功的启动:但用jps查看进程时,发现进程不存在,下面是在datanode日记文件的错误信息 如下图的截屏所示: 主要原因:发生错误的原因:由于把data放在 ...