Merge pull request #57 from Degulleo/DO-60-대국-시작-버튼-중복-클릭-방지
DO-60 버튼 상호작용 제어 스크립트 생성
This commit is contained in:
commit
8fa494e541
52
Assets/Script/Utilty/SingleInteractableButtonHandler.cs
Normal file
52
Assets/Script/Utilty/SingleInteractableButtonHandler.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4330206548604932b038a7007dacf94b
|
||||||
|
timeCreated: 1742970986
|
Loading…
x
Reference in New Issue
Block a user