[Unity]/[Unity]

[Unity] onClick.AddListener() 함수의 파라미터 전달 문제

극꼼 2022. 5. 28. 05:23
반응형


유니티에서 onClick.AddListener()를 이용해 버튼에 메서드를 연결하던 도중 다음과 같은 문제가 생겼습니다. 코드는 아래와 같습니다.

for (int i = 0; i < 3; i++)
{
    Button button =_buttonBundle[StringBundle.LevelUpButton +i.ToString()];
    Debug.Log(i);
    button.onClick.RemoveAllListeners();
    button.onClick.AddListener(() => SelectLevelUpButton(i));
}

void SelectLevelUpButton(int num)
{
    Debug.Log("선택+" + num);
}

 

Debug.Log를 찍어보면 분명 0,1,2 순차적으로 입력했던 매개변수가 모두 3으로 바뀌어 있었습니다.

 

해결 방법은 아래와 같습니다.

int index = i;로 변수를 새로 선언해준 후, 이를 매개변수로 넣어주었습니다.

for (int i = 0; i < 3; i++)
{
    Button button =_buttonBundle[StringBundle.LevelUpButton +i.ToString()];
    int index = i;
    button.onClick.RemoveAllListeners();
    button.onClick.AddListener(() => SelectLevelUpButton(index));
}

void SelectLevelUpButton(int num)
{
    Debug.Log("선택+" + num);
}

 

의도한대로 메서드 연결이 됐음을 확인할 수 있었습니다.

반응형