Unity 框架

DragIcon.cs 929B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using TFramework;
  2. using UnityEngine;
  3. using UnityEngine.EventSystems;
  4. public class DragIcon : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerClickHandler
  5. {
  6. public TAction onClick;
  7. private bool _isDrag;
  8. private RectTransform _selfRect;
  9. private Canvas _canvas;
  10. private void Start()
  11. {
  12. _selfRect = GetComponent<RectTransform>();
  13. _canvas = GetComponentInParent<Canvas>();
  14. }
  15. public void OnBeginDrag(PointerEventData eventData)
  16. {
  17. }
  18. public void OnDrag(PointerEventData eventData)
  19. {
  20. _isDrag = true;
  21. _selfRect.anchoredPosition += eventData.delta / _canvas.scaleFactor;
  22. }
  23. public void OnEndDrag(PointerEventData eventData)
  24. {
  25. }
  26. public void OnPointerClick(PointerEventData eventData)
  27. {
  28. if (!_isDrag)
  29. onClick?.Invoke();
  30. else
  31. _isDrag = false;
  32. }
  33. }