내일배움캠프(Unity)

람다함수 안 매개변수 문제

빵어 2023. 12. 14. 17:13

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]));
}