public void OnDrag (EventSystems.PointerEventData eventData);

参数

eventData当前事件数据。

描述

在拖动期间,每次移动指针时由 EventSystem 调用。

有关用法示例,请参阅 EventTrigger

//Attach this script to the GameObject you would like to detect dragging on
//Attach an Event Trigger component to the GameObject (Click the Add Component button and go to Event>Event Trigger)
//Make sure the Camera you are using has a Physics Raycaster (Click the Add Component button and go to Event>Physics Raycaster) so it can detect clicks on GameObjects.

using UnityEngine; using UnityEngine.EventSystems;

public class OnDragExample : MonoBehaviour { void Start() { EventTrigger trigger = GetComponent<EventTrigger>(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.Drag; entry.callback.AddListener((data) => { OnDragDelegate((PointerEventData)data); }); trigger.triggers.Add(entry); }

public void OnDragDelegate(PointerEventData data) { Debug.Log("Dragging."); } }

下一个示例允许您通过拖动来移动游戏对象。

using UnityEngine;
using UnityEngine.EventSystems;

public class OnDragExample : MonoBehaviour { void Start() { //Fetch the Event Trigger component from your GameObject EventTrigger trigger = GetComponent<EventTrigger>(); //Create a new entry for the Event Trigger EventTrigger.Entry entry = new EventTrigger.Entry(); //Add a Drag type event to the Event Trigger entry.eventID = EventTriggerType.Drag; //call the OnDragDelegate function when the Event System detects dragging entry.callback.AddListener((data) => { OnDragDelegate((PointerEventData)data); }); //Add the trigger entry trigger.triggers.Add(entry); }

public void OnDragDelegate(PointerEventData data) { //Create a ray going from the camera through the mouse position Ray ray = Camera.main.ScreenPointToRay(data.position); //Calculate the distance between the Camera and the GameObject, and go this distance along the ray Vector3 rayPoint = ray.GetPoint(Vector3.Distance(transform.position, Camera.main.transform.position)); //Move the GameObject when you drag it transform.position = rayPoint; } }