EventInterfaces
事件触发类型的接口
命名空间 :using UnityEngine.EventSystems;
事件触发类型 |
描述 |
需要实现的方法 |
IPointerClickHandler |
点击按钮(按下操作+松开操作) |
|
IPointerDownHandler |
按下按钮 |
|
IPointerUpHandler |
松开按钮 |
|
IPointerEnterHandler |
刚进入操作范围 |
|
IPointerExitHandler |
从操作范围刚离开 |
|
IDragHandler |
拖拽操作中 |
|
IBeginDragHandler |
拖拽操作开始时 |
|
IEndDragHandler |
拖拽操作结束时 |
|
IScrollHandler |
当鼠标滚轮滚动时调用 |
|
ISelectHandler |
选择对象操作 |
|
IDeselectHandler |
取消选择对象操作 |
|
IMoveHandler |
发生移动事件(上、下、左、右等)时调用 |
|
ICancelHandler |
按下 Cancel 按钮时调用 |
|
IDropHandler |
在拖动目标对象上调用 |
|
ISubmitHandler |
按下 Submit 按钮时调用 |
|
IUpdateSelectedHandler |
每次勾选时在选定对象上调用 |
|
IInitializePotentialDragHandler |
在找到拖动目标时调用,可用于初始化值 |
|
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;
}