Unity UGUI事件接口概述

【接口介绍】

命名空间: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);
}

猜你喜欢

转载自www.cnblogs.com/-831/p/11504439.html
今日推荐