Unity UGUI事件接口概述

  UGUI 系统虽然提供了很多封装好的组件,但是要实现一些特定的功能还是显得非常有限,这时候就需要使用事件接口来完成UI功能的实现。比如我们想实现鼠标移动到图片上时自动显示图片的文字介绍,一般思路会想到写个射线来检测,但其实这样的检测UGUI已经替我们完成了,我们只需要实现检测到目标对象后所要执行的代码即可!
  UI 组件都是基于 UGUI 封装好的类和接口以及一些 Editor 文件来进行封装制作供开发者使用的,开发者利用这些封装好的工具,只需更专注于功能开发即可。UGUI 的代码是开源的,开发者可以查阅 UGUI 系统的具体细节来进行更深入的学习。UGUI 源码传送门:Unity-Technologies/UI
  Unity官方也为开发者提供了很多完整的案例,可以在 Assets Store上进行下载,搜索“Unity Samples: UI”。

【接口介绍】

命名空间:using UnityEngine.EventSystems;

IPointerEnterHandler

该接口实现方法如下:

public void OnPointerEnter(PointerEventData eventData)
{
    //当鼠标光标移入该对象时触发
}

IPointerExitHandler

该接口实现方法如下:

public void OnPointerExit(PointerEventData eventData)
{
    //当鼠标光标移出该对象时触发
}

IPointerDownHandler

该接口实现方法如下:

public void OnPointerDown(PointerEventData eventData)
{
    //鼠标点击A对象,按下鼠标时A对象响应此事件
}

IPointerUpHandler

该接口实现方法如下:

public void OnPointerUp(PointerEventData eventData)
{
    //鼠标点击A对象,抬起鼠标时响应
    //无论鼠标在何处抬起(即不在A对象中)
    //都会在A对象中响应此事件
    //注:响应此事件的前提是A对象必须响应过OnPointerDown事件
    Debug.Log("OnPointerUp " + name);
}

IPointerClickHandler

该接口实现方法如下:

public void OnPointerClick(PointerEventData eventData)
{
    //鼠标点击A对象,抬起鼠标时A对象响应此事件
    //注:按下和抬起时鼠标要处于同一对象上
}

IDragHandler

该接口实现方法如下:

public void OnDrag(PointerEventData eventData)
{
    //当鼠标在A对象按下并拖拽时 A对象每帧响应一次此事件
    //注:如果不实现此接口,则后面的四个接口方法都不会触发
    Debug.Log("OnDrag " + name);

    if (Input.GetMouseButton(0))
    {
        //拖拽移动图片
        SetDraggedPosition(eventData);
    }
}
private void SetDraggedPosition(PointerEventData eventData)
{
    var rt = gameObject.GetComponent<RectTransform>();
    Vector3 globalMousePos;
     if(RectTransformUtility.ScreenPointToWorldPointInRectangle(rt,eventData.position, eventData.pressEventCamera, out globalMousePos))
    {
        rt.position = globalMousePos;
    }
}

IInitializePotentialDragHandler

该接口实现方法如下:

public void OnInitializePotentialDrag(PointerEventData eventData)
{
    //当鼠标在A对象按下还没开始拖拽时 A对象响应此事件
    //注:此接口事件与IPointerDownHandler接口事件类似
    // 二者的执行顺序:先执行IPointerDownHandler,然后执行此接口事件
    Debug.Log("OnInitializePotentialDrag " + name);
}

IBeginDragHandler

该接口实现方法如下:

public void OnBeginDrag(PointerEventData eventData)
{
    //当鼠标在A对象按下并开始拖拽时 A对象响应此事件
    // 此事件在OnInitializePotentialDrag之后响应 OnDrag之前响应
    Debug.Log("OnBeginDrag " + name);
}

IEndDragHandler

该接口实现方法如下:

public void OnEndDrag(PointerEventData eventData)
{
    //当鼠标抬起时 A对象响应此事件
    Debug.Log("OnEndDrag " + name);
}

IDropHandler

该接口实现方法如下:

public void OnDrop(PointerEventData eventData)
{
    //A、B对象必须均实现IDropHandler接口,且A至少实现IDragHandler接口
    //当鼠标从A对象上开始拖拽,在B对象上抬起时 B对象响应此事件
    //此时name获取到的是B对象的name属性
    //eventData.pointerDrag表示发起拖拽的对象(GameObject)
    Debug.Log(eventData.pointerDrag.name + " OnDrop to " + name);
}

原文地址:https://www.cnblogs.com/unity3ds/p/10470295.html

时间: 2024-08-05 09:15:37

Unity UGUI事件接口概述的相关文章

javascript事件之:jQuery事件接口概述

事件的操作,在JavaScript是非常频繁的.然而原生javaScript的事件API让新手感觉非常不友好,再加上事件依赖于DOM,而原生javaScript对DOM的选择又是三板斧的功力.由此催生出以jQuery为领头羊的对原生js事件操作的兼容性处理,API优化以及一些功能的拓展. 现在,以jQuery2.0.3为例,我们来看看jQuery的事件接口. 首先来看拓展到jQuery.prototype下的实例方法: //5049 - 51501 jQuery.fn.extend({ 2 on

UGUI事件系统——事件接口

所有的事件接口均继承自 IEventSystemHandler IPointerEnterHandler 指针进入事件 IPointerExitHandler  指针退出事件 --利用指针进入.退出事件,可以完成ToolTip功能 IPointerDownHandler 指针按下事件:在可视元素矩形区域内按下时响应 IPointerUpHandler    指针抬起事件:在可视元素矩形区域内按下后,在任意地方抬起时响应 IPointerClickHandler 指针点击事件:在可视元素矩形区域内

unity UI事件

由于工作需要到持续按键,所以了解了一下unity UI事件,本文主要转载于http://www.cnblogs.com/zou90512/p/3995932.html?utm_source=tuicool&utm_medium=referral,并对相关问题进行解释. 我们最常用到的就是unity的button组件,其实button组件所响应的事件为unity众多ui事件中的PointerClick事件,unity的ui事件如下图所示: 实现响应事件有以下三种: (一)在相关UI控件上挂脚本,脚

UGUI 事件穿透规则

UGUI事件分为两大类:点击和拖拽. 点击包括 pointerdown, pointerup. 拖拽包括 begindrag, drag, enddrag. 点击事件无穿透:只会被最上层UI响应,不会向下层传递. 拖拽事件半穿透:透过上层UI直到遇见实现了拖拽事件的第一个UI,并且不会向下层传递. 举例:一堆重叠在同一位置的按钮按层次从上到下依次为A,B,C,D 1,只有最上层的按钮A能收到点击事件.下面的全部被挡住了. 2,给B实现 IBeginDrag, IDrag, IEndDrag接口,

Android Wear 用于发送与同步数据的数据类型与接口概述

Android Wear数据层的API,是google play service的一部分,为您的手持设备和可穿戴式应用程序的通信通道. Api包括一系列数据对象,可以让系统通过监听器和线路通知app数据层重要的事件. 以下是几种对象类型. Data Item 提供数据存储用于手机和wear的自动同步. Messages 消息API可以实现fire-and-forget模式,如在wear中控制手机播放器控制或者通过手机发送一个意图给wear,当建立连接或者发生传输错误的时候,都会提供消息.消息是一

Unity UGUI —— 无限循环List

还记得大学毕业刚工作的时候是做flash的开发,那时候看到别人写的各种各样的UI组件就非常佩服,后来自己也慢慢尝试着写,发现其实也就那么回事.UI的开发其实技术的成分相对来说不算多,但是一个好的UI是绝对少不了底层组件的支持的.我个人认为UI组件中相对比较复杂的就是List了,所以,这两天实现了一个UGUI的list,写了好几个版本,最终这个版本是相对比较好用的,在这我介绍一下大概思路,一是巩固一下知识做个记录,二是发扬一下分享精神.嘿嘿,大家多多赐教. 写List有两个重点是需要考虑的: 1.

因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入

Unity for Android 比较特殊,Unity for IOS 打包是将XCODE工程直接交给开发者,开发者可以在工程 的基础上继续添加新的视图,最后由开发者自行打包生成IPA包,发布程序.而Unity for Android打包 直接生成APK包,等于说源代码开发者是看不到的,但是Unity的自身确实有些局限,针对Android平台我 们需要学习如何在Unity中调用Android的JAVA代码.本章我们的目标是使用Unity的脚本打开Activity. 首先我们创建一个普通的And

java 第37节 接口概述

2016-06-29 1 接口概述 abstract class 抽象类的修饰符 interface 接口的修饰符 extends 只能是一个 implements 可以是多个 接口只有抽象方法,它比抽象类还要抽象,接口是彻彻底底的抽象! 接口是抽象方法和常量的属性集合. 接口中只能包含抽象方法和常量,不能改有变量.初始化块.构造器. 注意事项: 1,接口的修饰符只有两种:默认和public 2,接口内的变量会被设置成共有的.静态的和最终的字段. 3,接口内只有抽象方法和常量的属性集合. int

协议之常见显示接口概述

1.IIC 2.SPI 3.8080/8600 4.RGB接口 5.MIPI_DSI 6.TFT接口 7.MCU工作特点 1.IIC I2C总线,是Inter-Integrated Circuit的缩写.INTER-IC意思是用于相互作用的集成电路,这种集成电路主要由双向串行时钟线SCL和双向串行数据线SDA两条线路组成. I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的,包括总线裁决和高低速器件同步功能的高性能串行总线. I2C总线只有两根双向信号线.一根是数据线SDA,