Я думаю, вам нужно немного реструктурировать свой код.
Итак, вот как я бы это сделал
public class Item : MonoBehaviour {
public string itemName;
public int count;
}
Я создам базовый класс Item
для дерева, железаили что-то еще в вашей игре.
Далее я создам скрипт-обработчик, который отслеживает все элементы, которые были нажаты / не нажаты
Handler.cs
Public Class Handler: MonoBehaviour {
public Item itemPrefab;
public Dictionary<string, Item> displayItems= new Dictionary<string, Item>();
public void OnWoodClicked()
{
OnItemClicked("wood");
}
public void OnIronClicked()
{
OnItemClicked("iron");
}
private void OnItemClicked(string itemKey)
{
if (displayItems.ContainsKey(itemKey))
{
displayItems[itemKey].count++;
}
else
{
Item item = Instantiate(itemPrefab);
item.count = 1;
item.itemName=itemKey;
displayItems.Add(itemKey, item);
}
}
}
Итак, чтобы отслеживать созданные элементы, я создал словарь public Dictionary<string, Item> displayItems;
В этом сценарии OnItemClicked(string itemKey)
Метод проверяет, является ли элементэтот тип уже создан или нет.(Проверяя, существует ли этот ключ)
Если этот элемент не создан, мы создадим новый Item
(префаб для отображения элемента, который вы хотите показать) и добавим его в словарь в соответствии с его ключом.
Но если онуже существует, затем просто получите доступ к этому объекту как displayItems[itemKey]
, как вам нравится
Так, например, если вы щелкнете по дереву, вы получите доступ к элементу отображения дерева как displayItems["wood"]
.
Надеюсь, это поможет.Просто оставьте комментарий, если хотите, чтобы я прояснил ситуацию.