UI_BuildInfo.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System;
  5. using UnityEngine.EventSystems;
  6. public class UI_BuildInfo : MonoBehaviour
  7. {
  8. public int buildId;
  9. public Action<int> touchDownAC = null;
  10. public Action<int> touchUpAC = null;
  11. /// <summary>
  12. /// 按下
  13. /// </summary>
  14. private void OnMouseDown()
  15. {
  16. if (IsPointerOverUIObject())
  17. {
  18. return;
  19. }
  20. if (touchDownAC != null)
  21. {
  22. touchDownAC(buildId);
  23. }
  24. }
  25. /// <summary>
  26. /// 抬起
  27. /// </summary>
  28. private void OnMouseUp()
  29. {
  30. if (IsPointerOverUIObject())
  31. {
  32. return;
  33. }
  34. if (touchUpAC != null)
  35. {
  36. touchUpAC(buildId);
  37. }
  38. }
  39. /// <summary>
  40. /// 是点否在UI上
  41. /// </summary>
  42. /// <returns>结果</returns>
  43. private bool IsPointerOverUIObject()
  44. {
  45. PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);
  46. eventDataCurrentPosition.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
  47. List<RaycastResult> results = new List<RaycastResult>();
  48. EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
  49. return results.Count > 0;
  50. }
  51. }