在Unity中,如果要通过鼠标拖到UI组件或者触摸移动UI组件,可以使用EventSystems下的方法。
具体实现如下:
新建一个脚本,DragController.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class DragController : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler
{
private RectTransform tran;
private Vector2 pointerOffset;
private void Awake()
{
tran = GetComponent<RectTransform>();
}
public void OnPointerDown(PointerEventData eventData)
{
// 计算触摸点与拖动对象的偏移量
pointerOffset = eventData.position - (Vector2)tran.position;
}
public void OnDrag(PointerEventData eventData)
{
// 更新拖动对象的位置
tran.position = eventData.position - pointerOffset;
}
public void OnPointerUp(PointerEventData eventData)
{
// 重置偏移量
pointerOffset = Vector2.zero;
}
}
然后把该脚本拉到UI组件中,运行后我们可以通过鼠标拖到UI组件,在触摸屏上,我们也可以通过触摸UI组件拖动。
效果如:
Unity 鼠标点击或触摸任意拖动UGUI的方法