Start문에서 람다를 사용하다가 오류가 발생했다.
_buttons = new List<Button>();
for (int i = 0; i < 9; ++i)
{
_buttons[i].onClick.AddListener(() => ApplyGearInfoToEquipPanel(_buttons[i]));
}
_button[i]의 값을 ApplyGearInfoToEquipPanel() 함수의 매개 변수로 전달해야하는데,
전달되는 _button[i]의 값,
매개변수는 람다 함수가 실행되는 시점에 결정된다.
따라서 위 코드를 사용한다면 _buttons[i]의 값을 매개변수로 전달할 수 없다.
저 코드를 쓰게된다면 _buttons[9]의 값이 ApplyGearInfoToEquipPanel에 전달된다.
_buttons[i]보다 i의 값을 고정시켜 놓는 방식으로 문제를 해결했다.
_buttons = new List<Button>();
for (int i = 0; i < player.Gears.Count; ++i)
{
int index = i;
_buttons[i].onClick.AddListener(() => ApplyGearInfoToEquipPanel(_buttons[index]));
}
'내일배움캠프(Unity)' 카테고리의 다른 글
비동기와 Coroutine 특강 (0) | 2023.12.15 |
---|---|
TMP_Text (0) | 2023.12.14 |
클린 코드 특강2 (0) | 2023.12.12 |
게임 개발 숙련 강의 정리2 (0) | 2023.12.11 |
TIL - 클린코드 특강, 게임 개발 숙련 강의 정리1 (1~2강) (0) | 2023.12.08 |