using UnityEngine;
using UnityEngine.UIElements;
public class DragUI : MonoBehaviour
{
VisualElement m_VisualElement;
private float ScreenRatio;
private Vector2 pos;
bool CanMove = false;
private Vector2 Diff;
void Start()
{
UIDocument document = GetComponent<UIDocument>();
var root = document.rootVisualElement;
m_VisualElement = root.Q<VisualElement>();
m_VisualElement.RegisterCallback<PointerDownEvent>(OnPointerDown);
m_VisualElement.RegisterCallback<PointerMoveEvent>(OnPointerMove);
m_VisualElement.RegisterCallback<PointerUpEvent>(OnPointerUp);
}
private void Update()
{pos = RuntimePanelUtils.ScreenToPanel(m_VisualElement.panel, new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y));
}
private void OnPointerDown(PointerDownEvent evt)
{
CanMove = true;
Diff = pos - (Vector2)m_VisualElement.transform.position;
}
private void OnPointerMove(PointerMoveEvent evt)
{
if (CanMove)
{
pos.x -= Diff.x;
pos.y -= Diff.y;
m_VisualElement.transform.position = pos;
}
}
private void OnPointerUp(PointerUpEvent evt)
{
CanMove = false;
}
}
UIToolkit 拖拽