OneShotOneKill/Assets/Script/UGUI/Util/ButtonPress.cs

76 lines
1.6 KiB
C#
Raw Normal View History

2026-01-07 21:27:42 +00:00
using UnityEngine;
using UnityEngine.EventSystems;
public class ButtonPress : UnityEngine.UI.Button
{
private bool _handled;
private bool _pressed;
private float _pressedTime;
public float LongPressDuration = 0.9f;
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 || !interactable)
{
return;
}
if (Time.realtimeSinceStartup - _pressedTime >= LongPressDuration)
{
//_pressed = false;
//_handled = true;
onClick.Invoke();
}
}
/// <summary>
/// 외부에서 강제로 눌림 상태를 변경할 수 있도록 함
/// </summary>
public void ControlPress(bool active)
{
interactable = active;
}
}