//--------------------------------------------------------
|
// [Author]: 玩个游戏
|
// [ Date ]: Monday, July 31, 2017
|
//--------------------------------------------------------
|
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.EventSystems;
|
using UnityEngine.UI;
|
using System;
|
|
/// <summary>
|
/// 延迟触发点击事件的按钮,用于长按事件
|
/// </summary>
|
public class DelayButton:MonoBehaviour,IPointerDownHandler,IPointerUpHandler {
|
|
[SerializeField]
|
float m_Delay = 0.5f;
|
public float delay { get { return m_Delay; } }
|
|
[SerializeField]
|
Action m_OnClick;
|
public Action onClick { get { return m_OnClick; } }
|
|
float timer = 0f;
|
bool down = false;
|
|
public void OnPointerDown(PointerEventData eventData) {
|
timer = 0f;
|
down = true;
|
}
|
|
public void OnPointerUp(PointerEventData eventData) {
|
down = false;
|
}
|
|
private void OnEnable() {
|
timer = 0f;
|
down = false;
|
}
|
|
private void LateUpdate() {
|
if(down && timer < delay) {
|
timer += Time.deltaTime;
|
if(timer > delay) {
|
if(onClick != null) {
|
onClick?.Invoke();
|
}
|
}
|
}
|
}
|
|
}
|