У меня возникли проблемы с логикой слотов предметов в пользовательском интерфейсе инвентаря.
Я хочу, чтобы при вызове этого метода этот метод проверял список ItemSlots (который представляет собой список, в котором хранятся слоты элементов, созданные из префаба ItemSlot), с playerInventory.InventoryList (который содержит элементы). .
Затем я хочу добавить и удалить игровые объекты из слотов предметов в зависимости от инвентаря игрока (т. Е. Список должен обновляться по мере того, как я поднимаю и опускаю предметы)
Вот мой текущий код:
public void UpdateUI()
{
for (int i = 0; i < playerInventory.InventoryList.Count; i++)
{
if (playerInventory.InventoryList[i] != null)
{
Debug.Log("Creating new inventory slot...");
itemSlots.Add(Instantiate(itemSlot, contentPanel.transform));
itemSlots[i].transform.SetParent(contentPanel.transform);
ItemSlot newSlot = itemSlots[i].GetComponent<ItemSlot>();
newSlot.AddItem(playerInventory.InventoryList[i]);
}
}
}
В настоящее время элементы добавляются, но проблема в том, что каждый раз, когда я вызываю UpdateUI, он добавляет новые пустые кнопки из моего префаба. Я знаю, почему это происходит, потому что каждый раз, когда я вызываю UpdateUI, он проверяет, не меньше ли i = 0, чем playerInventory.InventoryList.Count, что всегда верно, но я не знаю, как это исправить.
Я также не знаю, как удалить эти элементы пользовательского интерфейса после того, как они были созданы (т. Е. Если игрок уронил предмет).
Я думаю, что я мог бы сделать это, определив массив определенного размера и добавив элементы, затем установив видимость слотов элементов с помощью SetActive, но затем я должен был определить размер инвентаря, и я не хотел сделай это.
Любые советы будут приветствоваться, спасибо!