原创
首先,要监听UGUI的事件,场景里必须有EventSystem物体,UGUI已经自动创建了。其次,UI上的脚本要引用using UnityEngine.EventSystems; 实现具体事件的接口。这些接口还蛮多的。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class NewBehaviourScript : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerDownHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("开始拖拽");
}
public void OnDrag(PointerEventData eventData)
{
Debug.Log("拖拽中");
transform.position = Input.mousePosition;
}
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log("结束拖拽");
}
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("连击次数" + eventData.clickCount);
Debug.Log("鼠标位置" + eventData.position);
}
}
注: EventTrigger组件也能实现回调,但是麻烦的多,没有直接用接口好用。具体怎么可以去网上找一下,要写七八句代码。
事件接口:
IPointerEnterHandler OnPointerEnter 当鼠标进入
IPointerExitHandler OnPointerExit 当鼠标离开
IPointerDownHandler OnPointerDown 当鼠标按下
IPointerUpHandler OnPointerUp 当鼠标抬起
IPointerClickHandler OnPointerClick 当鼠标按下并抬起
IBeginDragHandler OnBeginDrag 当开始拖拽
IDragHandler OnDrag 当拖拽中
IEndDragHandler OnEndDrag 当结束拖拽
IDropHandler OnDrop 当放下
IScrollHandler OnScroll 当滚动
IUpdateSelectedHandler OnUpdateSelected 当每个选择对象
ISelectHandler OnSelect 当对象变为选定
IDeselectHandler OnDeselect 当对象取消选的
IMoveHandler OnMove 当移动时
ISubmitHandler OnSubmit 当提交按钮被按下
ICancelHandler OnCancel 当取消按钮被按下
Event System 组件:
First Selected —— 开始时默认选择的第一个UI
Send Navigation Events —— 是否发送UI导航事件 (就是用键盘上下左右来选择UI,一般不开启)
Drag Threshold —— 拖拽敏感度 (越小越敏感)