UnityUI와 연출

UI Button 이벤트 기본

메뉴와 팝업 UI에서 자주 쓰는 `Button.onClick` 연결과 버튼 이벤트 처리 기본 흐름을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

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