Programing/Unity(C#)

[Unity] AddListener로 이벤트 추가하기

hye3193 2024. 3. 17. 00:23

기본적으로 유니티 인스펙터 창에서

위와 같은 창에서 이벤트를 연결할 수 있으나, 좀 더 편하게 스크립트 상에서 연결을 해 볼 것이다

Button 컴포넌트의 OnClick 뿐만 아니라 Slider의 OnValueChanged 등에도 같은 방식으로 연결이 가능하다

 

public class ClickExample : MonoBehaviour
{
    public Button yourButton;

    void Start()
    {
        Button btn = yourButton.GetComponent<Button>();
        btn.onClick.AddListener(TaskOnClick);
    }

    void TaskOnClick()
    {
        Debug.Log("You have clicked the button!");
    }
}

유니티 공식 문서 상의 예제이다

Button 컴포넌트를 받아온 뒤, AddListener를 통해 함수명을 입력해 주면 된다

 

public class ClickExample : MonoBehaviour
{
    public Button yourButton;

    void Start()
    {
        Button btn = yourButton.GetComponent<Button>();
        btn.onClick.AddListener(delegate { TaskOnClick(btn.name) });
    }

    void TaskOnClick(string name)
    {
        Debug.Log($"You have clicked the button!: {name}");
    }
}

혹은 위와 같은 방식으로 delegate를 통해 인자를 전달해 줄 수도 있다