Unity 事件触发类型

EventInterfaces

事件触发类型的接口

命名空间 :using UnityEngine.EventSystems;

事件触发类型

描述

需要实现的方法

IPointerClickHandler

点击按钮(按下操作+松开操作)

public void OnPointerClick(PointerEventData eventData)
{
}

IPointerDownHandler

按下按钮

public void OnPointerDown(PointerEventData eventData)
{
}

IPointerUpHandler

松开按钮

public void OnPointerUp(PointerEventData eventData)
{
}

IPointerEnterHandler

刚进入操作范围

public void OnPointerEnter(PointerEventData eventData)
{
}

IPointerExitHandler

从操作范围刚离开

public void OnPointerExit(PointerEventData eventData)
{
}

IDragHandler

拖拽操作中

public void OnDrag(PointerEventData eventData)
{
}

IBeginDragHandler

拖拽操作开始时

public void OnBeginDrag(PointerEventData eventData)
{
}

IEndDragHandler

拖拽操作结束时

public void OnEndDrag(PointerEventData eventData)
{
}

IScrollHandler

当鼠标滚轮滚动时调用

public void OnScroll(PointerEventData eventData)
{
}

ISelectHandler

选择对象操作

public void OnSelect(BaseEventData eventData)
{
}

IDeselectHandler

取消选择对象操作

public void OnDeselect(BaseEventData eventData)
{
}

IMoveHandler

发生移动事件(上、下、左、右等)时调用

public void OnMove(AxisEventData eventData)
{
}

ICancelHandler

按下 Cancel 按钮时调用

public void OnCancel(BaseEventData eventData)
{
}

IDropHandler

在拖动目标对象上调用

public void OnDrop(PointerEventData eventData)
{
}

ISubmitHandler

按下 Submit 按钮时调用

public void OnSubmit(BaseEventData eventData)
{
}

IUpdateSelectedHandler

每次勾选时在选定对象上调用

public void OnUpdateSelected(BaseEventData eventData)
{
}

IInitializePotentialDragHandler

在找到拖动目标时调用,可用于初始化值

public void OnInitializePotentialDrag(PointerEventData eventData)
{
}
using UnityEngine;
using UnityEngine.EventSystems;//事件触发类型命名空间

public class EventTest : MonoBehaviour,IPointerDownHandler,IPointerUpHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        Debug.Log("PointerDown");
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        Debug.Log("PointerUp");
    }
}

EventTrigger

事件触发类型

描述

PointerClick

点击按钮(按下操作+松开操作)

PointerDown

按下按钮

PointerUp

松开按钮

PointerEnter

刚进入操作范围

PointerExit

从操作范围刚离开

Drag

拖拽操作中

BeginDrag

拖拽操作开始时

EndDrag

拖拽操作结束时

Scroll

当鼠标滚轮滚动时调用

Select

选择对象操作

Deselect

取消选择对象操作

Move

发生移动事件(上、下、左、右等)时调用

Cancel

按下 Cancel 按钮时调用

Drop

在拖动目标对象上调用

Submit

按下 Submit 按钮时调用

UpdateSelected

每次勾选时在选定对象上调用

InitializePotentialDrag

在找到拖动目标时调用,可用于初始化值

EventTrigger.Entry event1 = new EventTrigger.Entry ();
event1.eventID = EventTriggerType.PointerDown;
event1.callback.AddListener ((eventData) =>
{
    Debug.Log("PointerDown");
});

EventTrigger.Entry event2 = new EventTrigger.Entry ();
event2.eventID = EventTriggerType.PointerUp;
event2.callback.AddListener ((eventData) =>
{
    Debug.Log("PointerUp");
});

EventTrigger trigger = obj1.AddComponent<EventTrigger> ();
trigger.triggers.Add (event1);
trigger.triggers.Add (event2);

PointerEventData

button 此事件的 InputButton。
clickCount 连续单击次数。
clickTime 上次发送单击事件的时间。
delta 上次更新以来的指针增量。
dragging 确定用户在拖动鼠标还是在触控板上滑动。
enterEventCamera 与最后一个 OnPointerEnter 事件关联的摄像机。
hovered 悬停堆栈中的对象列表。
lastPress 最后一个按下事件的 GameObject。
pointerCurrentRaycast 与当前事件关联的 RaycastResult。
pointerDrag 正在接收 OnDrag 的对象。
pointerEnter 已收到“OnPointerEnter”的对象。
pointerId 指针的标识。
pointerPress 已收到 OnPointerDown 的 GameObject。
pointerPressRaycast 返回与鼠标单击、游戏手柄按钮按下或屏幕触摸相关联的 RaycastResult。
position 当前指针位置。
pressEventCamera 与最后一个 OnPointerPress 事件关联的摄像机。
pressPosition 最后一次指针点击的屏幕空间坐标。
rawPointerPress 按下的对象,即使该对象无法处理按下事件。
scrollDelta 上次更新以来的滚动次数。
useDragThreshold 应使用拖动阈值吗?

鼠标输入操作事件

方法

描述

OnMouseEnter

当鼠标移到物体一瞬间时调用一次

OnMouseExit

当鼠标从物体身上移开时调用一次

OnMouseOver

当鼠标一直停留在物体身上时,一直循环调用

OnMouseDown

当鼠标在物体身上点击鼠标左键调用一次

OnMouseDrag

当鼠标在物体身上点击鼠标左键一直不放,摁住了,就一直循环调用

若在物体上点击鼠标左键后摁住不放,移动鼠标远离物体,也会循环调用

OnMouseUp

当鼠标在物体点击鼠标左键后松手抬起,抬起的时候不管鼠标此时在不在物体上,就会被调用

OnMouseUpAsButton

当鼠标在物体点击鼠标左键时,抬起鼠标时鼠标必须也在物体上才会被调用

 //鼠标经过时改变物体颜色
   private Color mouseOverColor = Color.blue;//声明变量为蓝色
   private Color originalColor;//声明变量来存储本来颜色
   private MeshRenderer mt;
 
   void Start()
   {
      mt = this.GetComponent<MeshRenderer>();
      originalColor = mt.sharedMaterial.color;//开始时得到物体着色
   }
 
   void OnMouseEnter()
   {
      print("鼠标接触模型一瞬间");
      mt.material.color = Color.blue;
   }
   
   void OnMouseOver()
   {
      print("鼠标一直停留在模型上");
      mt.material.color = Color.red;
   }

   void OnMouseDown()
   {
      print("鼠标在物体身上点击鼠标左键调用一次");
      mt.material.color = Color.yellow;
   }

   void OnMouseDrag()
   {
      print("鼠标在物体身上点击鼠标左键一直不放,摁住了,就一直循环调用");
      mt.material.color = Color.black;
   }

   void OnMouseUp()
   {
      print("鼠标在物体点击鼠标左键后松手抬起");
      mt.material.color = Color.cyan;
   }

   void OnMouseUpAsButton()
   {
      print("鼠标在物体点击鼠标左键时,抬起鼠标时鼠标必须也在物体上才会被调用");
      mt.material.color = Color.magenta;
   }
   
   void OnMouseExit()
   {
      print("当鼠标从物体身上移开时调用一次");
      mt.material.color = Color.white;
   }