在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的更多相关文章

  1. Unity3D之UGUI学习笔记(一):UGUI介绍以及Canvas

    UGUI是Unity3D4.6官方提供的UI系统,支持2D和3D UI的开发. Unity3D UI史 OnGUI 在Unity4.6之前,官方提供的是OnGUI函数来开发UI界面,当然问题也比较多, ...

  2. Unity3D之UGUI学习笔记(二):Rect Transform与Anchor

    Rect Transform 我们都知道,Unity3D中所有的GameObject都必须要携带一个Transform组件,且该组件无法移除,那么作为UI显示的GameObject则不是携带Trans ...

  3. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  4. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  5. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  6. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  7. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  8. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  9. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

随机推荐

  1. 函数buf_page_create

    /********************************************************************//** Initializes a page to the ...

  2. poj 1364 King(差分约束)

    题意(真坑):傻国王只会求和,以及比较大小.阴谋家们想推翻他,于是想坑他,上交了一串长度为n的序列a[1],a[2]...a[n],国王作出m条形如(a[si]+a[si+1]+...+a[si+ni ...

  3. hdu 4602 Partition(快速幂)

    推公式+快速幂 公式有很多形式,可以写矩阵 1.前n-1项和的两倍+2的(n-2)次方,这个写不出啥 2.递推式:f(n)=2*f(n-1)+2的(n-3)次方 3.公式:2的(n-k-2)次方*(n ...

  4. UVA 10537 The Toll! Revisited 过路费(最短路,经典变形)

    题意:给一个无向图,要从起点s运送一批货物到达终点e,每个点代表城镇/乡村,经过城镇需要留下(num+19)/20的货物,而经过乡村只需要1货物即可.现在如果要让p货物到达e,那么从起点出发最少要准备 ...

  5. shell 中grep命令详解

    用‘grep’搜索文本文件如果您要在几个文本文件中查找一字符串,可以使用‘grep’命令.‘grep’在文本中搜索指定的字符串.举个例子:假设您正在‘/usr/src/linux/Documentat ...

  6. ffmpeg开发指南

    FFmpeg是一个集录制.转换.音/视频编码解码功能为一体的完整的开源解决方案.FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用.FFmpeg支持MPEG.DivX.M ...

  7. Data Binding(数据绑定)用户指南

    1)介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文件,并且用最少的代码来绑定你的app逻辑和layouts文件. Data Binding库不仅灵活而且广泛兼容- 它 ...

  8. js基础学习第一天(关于DOM和BOM)一

    关于BOM和DOM BOM 下面一幅图很好的说明了BOM和DOM的关系 BOM提供了一些访问窗口对象的一些方法,我们可以用它来移动窗口位置,改变窗口大小,打开新窗口和关闭窗口,弹出对话框,进行导航以及 ...

  9. HDU 1671 Phone List(POJ 3630)

    Phone List Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. android左右滑动加载分页以及动态加载数据

    android UI 往右滑动,滑动到最后一页就自动加载数据并显示 如图: package cn.anycall.ju; import java.util.ArrayList; import java ...