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