| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using UnityEngine;
- using UnityEngine.Events;
- using UnityEngine.EventSystems;
- public class DraggablePolygonPoint : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
- {
- //操作对应的下标
- [SerializeField]
- int index = 0;
- [SerializeField]
- RectTransform parent;
- private bool dragging = false;
- public UnityEvent<int,Vector3> OnBeginDragEvent;
- public UnityEvent<int,Vector3> OnEndDragEvent;
- public UnityEvent<int, Vector3> OnDragEvent;
- Vector2 pointerOffset;
- RectTransform rect;
- void Awake() {
- rect = parent != null ? parent : (RectTransform)(transform);
- }
- public void OnBeginDrag(PointerEventData eventData)
- {
- dragging = true;
- pointerOffset = eventData.position - (Vector2)rect.position;
- OnBeginDragEvent.Invoke(index, rect.localPosition);
- }
- public void OnDrag(PointerEventData eventData)
- {
- if (dragging)
- {
- transform.position = eventData.position - pointerOffset;
- OnDragEvent.Invoke(index, rect.localPosition);
- }
- }
- public void OnEndDrag(PointerEventData eventData)
- {
- dragging = false;
- // 更新多边形的顶点等操作...
- pointerOffset = Vector2.zero;
- OnEndDragEvent.Invoke(index, rect.localPosition);
- }
- }
|