在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的方法