Я в цикле генерирую карту состоящий из кнопок, каждой из них надо создать уникальный Listener. Генератор карты:
for (int y = 0; y < 3; y++)
{
for (int x = 0; x < 5; x++)
{
GameObject button = Instane(/* some settings */);
button.GetComponent<Button>().onClick.AddListener(delegate { Function(y, x); });
}
}
Так получается что все Listeners имеют ссылку на область в памяти, то есть на x и y и все они будут возвращать 3, 5 , так как после завершения цикла они равны 3, 5 и не удаляются так как в Listener все еще есть ссылка на x и y. Так вот, как сделать так, чтоб в метод передавалась не ссылка на объект в памяти, а именно значение, чтоб это было похоже на это new int[] { 1, 2 } , а не это new int[] { &x , &y }?
Замкнитесь локальные переменные внутри цикла:
for (int y = 0; y < 3; y++)
{
for (int x = 0; x < 5; x++)
{
GameObject button = Instane(/* some settings */);
int x1 = x, y1 = y;
button.GetComponent<Button>().onClick.AddListener(delegate { Function(y1, x1); });
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Помогите пожалуйста разобратьсяМне необходимо чтобы в DataGrid в колонку "Задолженность" выводилось число с 2 знаками после запятой
Например:
Имеется HTML-страница, состоящая из 3х таблиц(пустых), которые заполняются с помощью JavaScript с определенной периодичностью(данные таблиц обновляются)Страница...