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값을 따로 담아주는 변수를 계속 새로 생성해서 이 값을 매개변수로 넘겨주면 해결 완료