Degullmok-client/Assets/Script/Utilty/SingleInteractableButtonHandler.cs

52 lines
1.3 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class SingleInteractableButtonHandler : MonoBehaviour
{
[Tooltip("이 버튼이 한 번만 클릭되도록 제한할지 여부")]
[SerializeField] private bool enableOneTimeClick = true;
private Button _button;
private bool hasBeenClicked = false;
private void Awake()
{
// 버튼 컴포넌트 가져오기
_button = GetComponent<Button>();
if (_button != null && enableOneTimeClick)
{
// 기존 onClick 이벤트를 저장
Button.ButtonClickedEvent originalOnClick = _button.onClick;
_button.onClick = new Button.ButtonClickedEvent();
_button.onClick.AddListener(() =>
{
if (!hasBeenClicked)
{
hasBeenClicked = true;
for (int i = 0; i < originalOnClick.GetPersistentEventCount(); i++)
{
originalOnClick.Invoke();
}
// 버튼 비활성화
_button.interactable = false;
}
});
}
}
// 버튼 상태 리셋
public void ResetButton()
{
hasBeenClicked = false;
if (_button != null)
{
_button.interactable = true;
}
}
}