Unity设置UI组件位置

实现拖拽功能:

对于有父节点的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即可。 

 

你可能感兴趣的:(#,位置变更,Unity)