DoubleClickButton.cs 842 B

123456789101112131415161718192021222324252627282930313233343536
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using UnityEngine.Events;
  4. using UnityEngine.EventSystems;
  5. public class DoubleClickButton : Button
  6. {
  7. private float _lastTapTime;
  8. private int _tapCount;
  9. [Header("点击次数要求")]
  10. [SerializeField] private int requiredTapCount = 2;
  11. [Header("重置时间(秒)")]
  12. [SerializeField] private float resetTime = 0.5f;
  13. [Header("达到点击次数时触发的事件")]
  14. [SerializeField] private UnityEvent onMultiTap;
  15. public override void OnPointerClick(PointerEventData eventData)
  16. {
  17. if (Time.unscaledTime - _lastTapTime > resetTime)
  18. {
  19. _tapCount = 0;
  20. }
  21. _lastTapTime = Time.unscaledTime;
  22. _tapCount++;
  23. if (_tapCount == requiredTapCount)
  24. {
  25. onMultiTap?.Invoke();
  26. _tapCount = 0;
  27. }
  28. }
  29. }