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