參考連接:http://blog.csdn.net/huutu/article/details/46448313.net
using UnityEngine; using System.Collections; using UnityEngine.EventSystems; using UnityEngine.Events; public class RepeatButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler { public bool invokeOnce = false;//是否只調用一次 private bool hadInvoke = false;//是否已經調用過 public float interval = 0.1f;//按下後超過這個時間則認定爲"長按" private bool isPointerDown = false; private float recordTime; public UnityEvent onPress = new UnityEvent();//按住時調用 public UnityEvent onRelease = new UnityEvent();//鬆開時調用 void Start () { } void Update () { if (invokeOnce && hadInvoke) return; if (isPointerDown) { if ((Time.time - recordTime) > interval) { onPress.Invoke(); hadInvoke = true; } } } public void OnPointerDown(PointerEventData eventData) { isPointerDown = true; recordTime = Time.time; } public void OnPointerUp(PointerEventData eventData) { isPointerDown = false; hadInvoke = false; onRelease.Invoke(); } public void OnPointerExit(PointerEventData eventData) { isPointerDown = false; hadInvoke = false; onRelease.Invoke(); } }
buttonL.GetComponent<RepeatButton>().onPress.AddListener(MoveLeft); buttonL.GetComponent<RepeatButton>().onRelease.AddListener(Stand);