BridgeBtn.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. //单击按钮
  2. using System.Diagnostics;
  3. using UnityEngine.EventSystems;
  4. public class ClickButton : ClickEvent.ClickListener
  5. {
  6. protected override void OnPointerDown(PointerEventData eventData)
  7. {
  8. isRuning = true;
  9. }
  10. protected override void OnPointerUp(PointerEventData eventData)
  11. {
  12. if (isRuning)
  13. {
  14. Reset();
  15. callBack?.Invoke(true);
  16. }
  17. }
  18. protected override void Reset()
  19. {
  20. isRuning = false;
  21. }
  22. }
  23. //双击按钮
  24. public class DoubleClickButton : ClickEvent.ClickListener
  25. {
  26. public int maxSpaceTime = 250;
  27. private int clickCount = 0;
  28. private Stopwatch stopWatch;
  29. private float lastPointTime = 0;
  30. public DoubleClickButton()
  31. {
  32. stopWatch = new Stopwatch();
  33. Reset();
  34. }
  35. protected override void OnPointerDown(PointerEventData eventData)
  36. {
  37. isRuning = true;
  38. }
  39. protected override void OnPointerClick(PointerEventData eventData)
  40. {
  41. stopWatch.Start();
  42. clickCount++;
  43. if (clickCount == 2)
  44. {
  45. Reset();
  46. callBack?.Invoke(true);
  47. }
  48. }
  49. protected override void Update()
  50. {
  51. if (!stopWatch.IsRunning) return;
  52. if (stopWatch.ElapsedMilliseconds > maxSpaceTime)
  53. {
  54. Reset();
  55. callBack?.Invoke(false);
  56. }
  57. }
  58. protected override void Reset()
  59. {
  60. isRuning = false;
  61. if (stopWatch.IsRunning) stopWatch.Stop();
  62. stopWatch.Reset();
  63. clickCount = 0;
  64. }
  65. }
  66. //长按按钮
  67. public class PressButton : ClickEvent.ClickListener
  68. {
  69. public int pressMinTime = 2000;
  70. private Stopwatch stopWatch;
  71. public PressButton()
  72. {
  73. stopWatch = new Stopwatch();
  74. }
  75. protected override void OnPointerDown(PointerEventData eventData)
  76. {
  77. isRuning = true;
  78. stopWatch.Start();
  79. }
  80. protected override void OnPointerUp(PointerEventData eventData)
  81. {
  82. Reset();
  83. callBack?.Invoke(false);
  84. }
  85. protected override void Update()
  86. {
  87. if (!stopWatch.IsRunning) return;
  88. if (stopWatch.ElapsedMilliseconds > pressMinTime)
  89. {
  90. Reset();
  91. callBack?.Invoke(true);
  92. }
  93. }
  94. protected override void Reset()
  95. {
  96. isRuning = false;
  97. if (stopWatch.IsRunning) stopWatch.Stop();
  98. stopWatch.Reset();
  99. }
  100. }