DO-60 버튼 상호작용 제어 스크립트 생성

This commit is contained in:
fiore 2025-03-26 16:08:00 +09:00
parent fd1a239e5c
commit 570e6be25f
2 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,52 @@
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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4330206548604932b038a7007dacf94b
timeCreated: 1742970986