본문 바로가기
Unity

Button 클릭시, AddListener() 함수로 연결하는 방법

by Oz Driver 2025. 3. 25.

코드 추가없이 drag & drop 으로만 button click 이벤트를 처리하는 방법은 상황에 따라 불편할 수 있습니다. 

따라서 이번에는 동일한 기능을 code 로 구현해보겠습니다.

AddListener() 를 이용해서 연결하고, RemoveListener() 로 이벤트를 제거하는 방법입니다.

특히 런타임 중에 동적으로 버튼의 동작을 바꾸고 싶을 때는 코드로 이벤트를 등록하는 방법이 더 유용합니다.

 

먼저 Button 컴포넌트를 가져옵니다. 예시는 다음과 같습니다

using UnityEngine;
using UnityEngine.UI;

public class MyButtonHandler : MonoBehaviour
{
    public Button myButton;

    void Start()
    {
        myButton.onClick.AddListener(WhenButtonClicked);
    }

    void WhenButtonClicked()
    {
        Debug.Log("버튼이 클릭되었습니다!");
    }
}

 

AddListener() 안에 함수 이름만 넣는 것에 주목해주세요. 괄호를 붙이지 않습니다. 괄호를 붙이면 해당 줄에서 바로 실행되기 때문에, 클릭 시 실행되지 않게 하려면 함수 이름만 전달해야 합니다.

 

이 방법의 장점은 다음과 같습니다

(1) 코드에서 직접 관리할 수 있어 깔끔합니다.

(2) 런타임 중에 다른 함수를 연결하거나 제거할 수도 있습니다.

(3) 버튼이 많을 경우, 루프를 돌며 일괄적으로 처리하기도 편합니다.

 

이벤트를 제거하고 싶을 때는 RemoveListener()를 사용하면 됩니다. 예시는 다음과 같습니다

myButton.onClick.RemoveListener(WhenButtonClicked);

 

이렇게 하면 해당 함수에 대한 이벤트 등록이 해제되어, 더 이상 버튼을 클릭해도 실행되지 않게 됩니다.

보통 게임 오브젝트가 비활성화되거나 특정 상황에서 버튼을 잠시 끄고 싶을 때 유용하게 사용할 수 있습니다.

 

이번 글에서는 코드로 버튼 이벤트를 연결하는 AddListener() 사용법과, 이벤트를 제거하는 RemoveListener() 까지 함께 알아봤습니다. 인스펙터 방식보다 더 유연하게 제어할 수 있다는 점이 큰 장점입니다. 상황에 따라 선택해서 사용하시면 됩니다.