Unity: создание кнопок в цикле for без одинакового параметра onClickC#

Место общения программистов C#
Ответить
Anonymous
 Unity: создание кнопок в цикле for без одинакового параметра onClick

Сообщение Anonymous »

Я создаю систему инвентаризации, поэтому хочу, чтобы каждая кнопка onClick вызывала функцию с уникальным целым числом для каждой кнопки, чтобы она знала, по какому слоту нажимают. Ниже мой код:

Код: Выделить всё

public int inventorySize = 32;
public GameObject slotPrefab;
public GameObject slotHolder;
private int curSlotId = 0;

public void InitiateMenu()
{
inventory.Initialize();
for (int i = 0; i < inventorySize; i++)
{
GameObject newSlot = Instantiate(slotPrefab);
newSlot.transform.SetParent(slotHolder.transform, false);
//Change onClick
newSlot.GetComponent().onClick.AddListener(delegate { SlotClick(curSlotId); });
curSlotId++;
}
}

public void SlotClick(int slot)
{
Debug.Log("Inventory Slot #" + slot.ToString());
}
Что бы я ни делал, кажется, что все кнопки при нажатии записывают «Inventory Slot #32» в Debug.Log. Я пробовал использовать только переменную i в цикле for, что гарантировало та же проблема. Как бы вы это сделали? Однако кажется, что я инициирую или помещаю переменную, она считывает одно и то же пространство памяти в каждом цикле for, заставляя все кнопки вызывать функцию с целым числом 32.
Я знаю, что многие люди этого не делают. например, когда вопросы Unity задаются с тегом «C#», но мне интересно, относится ли это к C#, а не к Unity. Пожалуйста, извините меня, если я ошибаюсь.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -parameter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»