Project_WL/Assets/Script/Util/ButtonPress.cs

68 lines
1.4 KiB
C#
Raw Normal View History

2024-12-15 01:39:39 +00:00
using UnityEngine;
using UnityEngine.EventSystems;
public class ButtonPress : UnityEngine.UI.Button
{
private bool _handled;
private bool _pressed;
private float _pressedTime;
2025-01-24 21:17:32 +00:00
public float LongPressDuration = 0.9f;
2024-12-15 01:39:39 +00:00
public override void OnPointerExit(PointerEventData eventData)
{
base.OnPointerExit(eventData);
_pressed = false;
}
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData);
if (eventData.button != PointerEventData.InputButton.Left)
{
return;
}
_pressed = true;
_handled = false;
_pressedTime = Time.realtimeSinceStartup;
}
public override void OnPointerUp(PointerEventData eventData)
{
if (!_handled)
{
base.OnPointerUp(eventData);
}
_pressed = false;
}
public override void OnPointerClick(PointerEventData eventData)
{
if (!_handled)
{
base.OnPointerClick(eventData);
}
}
protected override void OnDisable()
{
_pressed = false;
}
private void Update()
{
if (!_pressed)
{
return;
}
if (Time.realtimeSinceStartup - _pressedTime >= LongPressDuration)
{
//_pressed = false;
//_handled = true;
onClick.Invoke();
}
}
}