实现拖拽功能:
对于有父节点的UI组件进行拖拽:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIDragger : MonoBehaviour, IDragHandler, IPointerDownHandler
{
private Vector2 offsetPos; //临时记录点击点与UI的相对位置
public void OnDrag(PointerEventData eventData)
{
transform.localPosition = eventData.position - offsetPos;//实现移动
}
public void OnPointerDown(PointerEventData eventData)
{
offsetPos = eventData.position - (Vector2)transform.localPosition;//获得相对位置
}
}
对无父节点的,将localPosition改为position即可
实现缓动功能:
对于有父节点的UI:
timer += v * Time.deltaTime;
transform.localPosition = Vector3.Lerp(startPosition, targetPosition, timer);
/*
timer:计时器,从0开始;
startPosition:起始位置;
targetPosition:目标位置;
v:速度,总的过程完成时间为1/v
*/
对于无父节点的,将localPosition改为position即可。