Unity3D 개발

[Unity3D/UI] for문과 Button.onClick.AddListener() 문제점

어묵 2021. 11. 12. 13:47

여기서 버튼에 이벤트를 추가하고싶었는데

 

buttons[0].onClick => onClickEvent(0);

buttons[1].onClick => onClickEvent(1);

buttons[2].onClick => onClickEvent(2);

buttons[3].onClick => onClickEvent(3);

 

이렇게 들어가는게 아니라 for문 마지막 i값인 4가 들어가는 문제가 발생해

buttons[0].onClick => onClickEvent(4);

buttons[1].onClick => onClickEvent(4);

buttons[2].onClick => onClickEvent(4);

buttons[3].onClick => onClickEvent(4);

 

이렇게 입력이 되어버리는 현상

그래서 인덱스 배열이 잘못되었다는

IndexOutOfRangeException: Index was outside the bounds of the array.

 

오류를 접하게 된다.

 

해결방법 --

 

for (int i = 0; i < buttons.Length; i++) {

    int index = i;

    buttons[i].onClick.AddListener(() => {

        onClickEvent(index);

    }

}

for문 안에 i값을 따로 담아주는 변수를 계속 새로 생성해서 이 값을 매개변수로 넘겨주면 해결 완료