确定用户在拖动鼠标还是在触控板上滑动。
如果用户在移动鼠标或触控板指针,则 PointerEventData.dragging 返回 /true/。如果鼠标或触控板指针未移动,则返回 /false/。dragging 利用鼠标或触控板手指的移动。OnDrag
包含 dragging 事件。
以下示例使用 IDragHandler
、IDragHandler
和 IEndDragHandler
接口。这些接口分别提供 EventTrigger.OnBeginDrag、EventTrigger.OnDrag 和 EventTrigger.OnEndDrag 事件处理程序。当指针开始移动时,IDragHandler.OnDrag 进行查询,仅当用户拖动指针时才会发送消息。
using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;
// PointerEventDrag.dragging example.
// PointerEventData.dragging is set totrue
when the object is moving. // Otherwise dragging is set tofalse
. // // Create a 2D Project and add a Canvas and an Image as a child. Position the Image in the center // of the Canvas. Resize the Image to approximately a quarter of the height and width. Create a // Resources folder and add a sprite. Set the sprite to the Image component. Then add this script // to the Image. Then press the Play button. The Image should be clickable and moved with the // mouse or trackpad.
public class Example : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { private Vector3 position; private float timeCount = 0.0f;
public void OnBeginDrag(PointerEventData eventData) { position = transform.position; Debug.Log("OnBeginDrag: " + position); }
// Drag the selected item. public void OnDrag(PointerEventData data) { if (data.dragging) { // Object is being dragged. timeCount += Time.deltaTime; if (timeCount > 0.25f) { Debug.Log("Dragging:" + data.position); timeCount = 0.0f; } } transform.position = data.position; }
public void OnEndDrag(PointerEventData eventData) { transform.position = position; Debug.Log("OnEndDrag: " + position); } }