반응형
유니티에서 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);
}
의도한대로 메서드 연결이 됐음을 확인할 수 있었습니다.
반응형
'[Unity] > [Unity]' 카테고리의 다른 글
[Unity] AsyncOperation (0) | 2022.09.23 |
---|---|
[Unity] 유니티용 비동기 라이브러리 패키지 Unitask (0) | 2022.09.22 |
[Unity] 입사각, 반사각을 구하는 방법 (0) | 2022.05.11 |
[Unity] Error Unity AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.games.Games (1) | 2022.04.04 |
[Unity] UI터치와 게임 화면 터치 분리해주는 방법 (0) | 2022.03.19 |