У меня есть следующий код:Почему моя кнопка неправильно регистрирует вывод?
void Setup(CityBuilding[] buildings) {
foreach (CityBuilding building in buildings)
{
GameObject buildingDisp = Instantiate(singleGoodsDisplay);
//... Other stuff not relevent happens here
buildingDisp.GetComponent<Button>().onClick.AddListener(() => { ProcessClick(building); });
Debug.Log(building);
}
}
private void ProcessClick(CityBuilding building)
{
Debug.Log(building);
}
Суть в том, у меня есть несколько кнопок, которые сохраняются в виде сборной и экземпляров. Я добавляю к нему прослушиватель onClick, в форме лямбда-функции. Я передаю объект данных. Прямо сейчас buildings
представляет собой массив из двух. Я вижу, что оба элемента отлаживаются, однако, когда я нажимаю на кнопки, я всегда вижу, что второй элемент используется, а не первый. Я не совсем уверен, что я делаю неправильно. Есть предположения? Благодаря!
Я не знаю, если поведение такого же в C#, но если вы имели подобную вещь в JavaScript, к тому времени, клик Иногда локальное 'building' всегда будет ссылаться на последний элемент коллекции. –
По-видимому, он был изменен на C# 5, так что переменная считается «новой» на каждой итерации, поэтому игнорируйте. –