DragUtils.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.EventSystems;
  6. namespace LoyalSoftSDK
  7. {
  8. public class DragUtils : MonoBehaviour,IBeginDragHandler, IDragHandler, IEndDragHandler,IPointerDownHandler,IPointerUpHandler
  9. {
  10. private RectTransform rectTransform;
  11. private RectTransform cavasRectTransform;
  12. private Vector2 starPoint;
  13. private Vector2 endPoint;
  14. private bool isClick=true;
  15. public delegate void EndDragHandler();
  16. public EndDragHandler OnEndDragHandler;
  17. public delegate void ClickHandler();
  18. public ClickHandler OnClickHandler;
  19. public delegate void BeginDragHandler();
  20. public BeginDragHandler OnBeginDragHandler;
  21. void Start()
  22. {
  23. rectTransform = this.gameObject.transform.parent.GetComponent<RectTransform>();
  24. cavasRectTransform = UIFormManager.GetInstance().canvasTransform.gameObject.GetComponent<RectTransform>();
  25. }
  26. public void OnBeginDrag(PointerEventData eventData)
  27. {
  28. //Debug.Log(eventData.position);
  29. if(OnBeginDragHandler!=null)
  30. {
  31. OnBeginDragHandler.Invoke();
  32. }
  33. isClick = false;
  34. //Debug.Log("拖拽开始");
  35. }
  36. public void OnDrag(PointerEventData eventData)
  37. {
  38. Vector3 globalMousePos;
  39. if (RectTransformUtility.ScreenPointToWorldPointInRectangle
  40. (cavasRectTransform, eventData.position, eventData.pressEventCamera, out globalMousePos))
  41. {
  42. rectTransform.position = globalMousePos;
  43. rectTransform.rotation = cavasRectTransform.rotation;
  44. }
  45. }
  46. public void OnEndDrag(PointerEventData eventData)
  47. {
  48. //Debug.Log(eventData.position);
  49. //Debug.Log("拖拽停止");
  50. if (OnEndDragHandler != null)
  51. {
  52. OnEndDragHandler.Invoke();
  53. }
  54. }
  55. public void OnPointerDown(PointerEventData eventData)
  56. {
  57. //Debug.Log("按下");
  58. // starPoint = eventData.position;
  59. isClick = true;
  60. }
  61. public void OnPointerUp(PointerEventData eventData)
  62. {
  63. //Debug.Log("抬起");
  64. //endPoint = eventData.position;
  65. //float dragDistance = Mathf.Pow(endPoint.x - starPoint.x, 2) + Mathf.Pow(endPoint.y - starPoint.y, 2);
  66. //if(dragDistance<=100)
  67. //{
  68. //}
  69. if(isClick)
  70. {
  71. if (OnClickHandler != null)
  72. {
  73. OnClickHandler.Invoke();
  74. }
  75. }
  76. }
  77. // Use this for initialization
  78. // Update is called once per frame
  79. void Update()
  80. {
  81. }
  82. }
  83. }