|
|
@@ -0,0 +1,39 @@
|
|
|
+using UnityEngine;
|
|
|
+using UnityEngine.EventSystems;
|
|
|
+using System;
|
|
|
+
|
|
|
+public class LongPressMonitor : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler
|
|
|
+{
|
|
|
+ public Action onLongPress;
|
|
|
+ public float interval = 1.0f;
|
|
|
+ bool isDown;
|
|
|
+ float downTime;
|
|
|
+ [NonSerialized] public bool isLongPress; //最后一次点击是否为长按
|
|
|
+
|
|
|
+ void Update()
|
|
|
+ {
|
|
|
+ if (isDown)
|
|
|
+ {
|
|
|
+ if (Time.time - downTime > interval)
|
|
|
+ {
|
|
|
+ isDown = false;
|
|
|
+ isLongPress = true;
|
|
|
+ onLongPress?.Invoke();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public void OnPointerDown(PointerEventData eventData)
|
|
|
+ {
|
|
|
+ isDown = true;
|
|
|
+ isLongPress = false;
|
|
|
+ downTime = Time.time;
|
|
|
+ }
|
|
|
+ public void OnPointerExit(PointerEventData eventData)
|
|
|
+ {
|
|
|
+ isDown = false;
|
|
|
+ }
|
|
|
+ public void OnPointerUp(PointerEventData eventData)
|
|
|
+ {
|
|
|
+ isDown = false;
|
|
|
+ }
|
|
|
+}
|