using UnityEngine; using UnityEngine.EventSystems; using System.Collections; /// <summary> /// 腳本位置:UGUI按鈕組件身上 /// 腳本功能:實現按鈕長按狀態的判斷 /// 建立時間:2015年11月17日 /// </summary> // 繼承:按下,擡起和離開的三個接口 public class OnButtonPressed :MonoBehaviour,IPointerDownHandler,IPointerUpHandler,IPointerExitHandler { // 延遲時間 private float delay = 0.2f; // 按鈕是不是按下狀態 private bool isDown = false; // 按鈕最後一次是被按住狀態時候的時間 private float lastIsDownTime; void Update () { // 若是按鈕是被按下狀態 if (isDown) { // 當前時間 - 按鈕最後一次被按下的時間 > 延遲時間0.2秒 if (Time.time - lastIsDownTime > delay) { // 觸發長按方法 Debug.Log("長按"); // 記錄按鈕最後一次被按下的時間 lastIsDownTime = Time.time; } } } // 當按鈕被按下後系統自動調用此方法 public void OnPointerDown (PointerEventData eventData) { isDown = true; lastIsDownTime = Time.time; } // 當按鈕擡起的時候自動調用此方法 public void OnPointerUp (PointerEventData eventData) { isDown = false; } // 當鼠標從按鈕上離開的時候自動調用此方法 public void OnPointerExit (PointerEventData eventData) { isDown = false; } }