DraggablePolygonPoint.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using UnityEngine;
  2. using UnityEngine.Events;
  3. using UnityEngine.EventSystems;
  4. public class DraggablePolygonPoint : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
  5. {
  6. //操作对应的下标
  7. [SerializeField]
  8. int index = 0;
  9. private Vector3 initialPosition;
  10. private bool dragging = false;
  11. public UnityEvent<int,Vector3> OnBeginDragEvent;
  12. public UnityEvent<int,Vector3> OnEndDragEvent;
  13. public UnityEvent<int, Vector3> OnDragEvent;
  14. public void OnBeginDrag(PointerEventData eventData)
  15. {
  16. initialPosition = transform.position;
  17. dragging = true;
  18. RectTransform rect = (RectTransform)(transform);
  19. OnBeginDragEvent.Invoke(index, rect.localPosition);
  20. }
  21. public void OnDrag(PointerEventData eventData)
  22. {
  23. if (dragging)
  24. {
  25. transform.position = eventData.position;
  26. RectTransform rect = (RectTransform)(transform);
  27. OnDragEvent.Invoke(index, rect.localPosition);
  28. }
  29. }
  30. public void OnEndDrag(PointerEventData eventData)
  31. {
  32. dragging = false;
  33. // 更新多边形的顶点等操作...
  34. RectTransform rect = (RectTransform)(transform);
  35. OnEndDragEvent.Invoke(index, rect.localPosition);
  36. }
  37. }