Skip to content

Instantly share code, notes, and snippets.

@unity3dcollege
Created January 30, 2018 20:23
Show Gist options
  • Save unity3dcollege/a831b0b10e1d700565a58e60917943e4 to your computer and use it in GitHub Desktop.
Save unity3dcollege/a831b0b10e1d700565a58e60917943e4 to your computer and use it in GitHub Desktop.
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class LongClickButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
private bool pointerDown;
private float pointerDownTimer;
[SerializeField]
private float requiredHoldTime;
public UnityEvent onLongClick;
[SerializeField]
private Image fillImage;
public void OnPointerDown(PointerEventData eventData)
{
pointerDown = true;
Debug.Log("OnPointerDown");
}
public void OnPointerUp(PointerEventData eventData)
{
Reset();
Debug.Log("OnPointerUp");
}
private void Update()
{
if (pointerDown)
{
pointerDownTimer += Time.deltaTime;
if (pointerDownTimer >= requiredHoldTime)
{
if (onLongClick != null)
onLongClick.Invoke();
Reset();
}
fillImage.fillAmount = pointerDownTimer / requiredHoldTime;
}
}
private void Reset()
{
pointerDown = false;
pointerDownTimer = 0;
fillImage.fillAmount = pointerDownTimer / requiredHoldTime;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment