기본 패턴
csharp
[SerializeField] private Button startButton;
private void Awake()
{
startButton.onClick.AddListener(HandleStartClicked);
}설명
- Unity UI의
Button은 클릭 시onClick이벤트를 발생시킵니다. - 인스펙터에서 직접 함수 연결도 가능하지만, 코드에서 등록하면 흐름을 더 명확히 읽기 쉬울 때가 많습니다.
- 팝업 열기, 씬 전환, 사운드 재생, 설정 저장 같은 UI 상호작용에서 기본처럼 쓰입니다.
- 등록한 리스너는 비활성화나 파괴 시점에 정리하는 습관이 중요합니다.
짧은 예제
csharp
using UnityEngine.UI;
[SerializeField] private Button closeButton;
[SerializeField] private GameObject panel;
private void OnEnable()
{
closeButton.onClick.AddListener(ClosePanel);
}
private void OnDisable()
{
closeButton.onClick.RemoveListener(ClosePanel);
}
private void ClosePanel()
{
panel.SetActive(false);
}빠른 정리
| 항목 | 설명 |
|---|---|
Button | 클릭 가능한 UI 컴포넌트 |
onClick.AddListener | 코드에서 이벤트 연결 |
RemoveListener | 등록 해제 |
| 인스펙터 연결 | 간단한 경우 빠르게 설정 가능 |
| 패널 제어 | 메뉴 열기/닫기 흐름과 잘 맞음 |
주의할 점
OnEnable에서 리스너를 등록했다면 OnDisable에서 해제하지 않으면 중복 등록이 쌓일 수 있습니다. 특히 팝업을 여러 번 열고 닫는 UI에서 자주 생기는 문제입니다.
참고 링크
2 sources