代碼:
using UnityEngine.EventSystems; using System.Collections; /// <summary> /// 腳本位置:UGUI按鈕組件身上 /// 腳本功能:實現按鈕長按狀態的判斷 /// </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; } }
