Работаю с инвентарем, цикл for не использую. Когда беру предмет он удаляется и в инвентаре (ui) создается слот с иконкой, именем и кнопкой. Кнопка имеет метод onClick прописанный через скрипт. Метод удаления из инвентаря и здесь возникла проблема. Создаю слот в инвентаре, создаю кнопку и даю ей в parent'ы свежесозданный слот, по идее после нажатия кнопки должен удалится слот, который её родитель и она сама соответственно (ну и там предмет на сцене потом появится и до этого я еще не дошел). НО если я беру второй предмет в инвентарь то всё ломается : нажимая на кнопку удаления в первом слоте инвентаря удаляется второй (или третий, вообщем последний созданный) и если я жму кнопку в еще одном слоте вылазит ошибка, мол "Кнопка уже удалена, че ты её тыкаешь?".
Код:
Код
public void InventoryAct (GameObject itembox) { // itembox - предмет, попавший из луч из другого скрипта, а этот войд из интерфейса
Item item = itembox.GetComponent<Item> ();
items.Add (item.prefab); // тут не важно
itemInvName = itembox.name;
Destroy (itembox);
invItem = Instantiate<GameObject> (slot, content.transform);
invItem.GetComponentInChildren<Text> ().text = itemInvName; // магия началась
invItem.transform.Find ("SlotTexture").gameObject.GetComponent<Image> ().sprite = item.icon;
rtransform = invItem.GetComponent<RectTransform> ();
rtransform.anchoredPosition = new Vector2 (128f, offset);
offset -= 61; // магия закончилась
rbutton = Instantiate<GameObject> (removeButton, invItem.transform); //создание кнопки (removebutton - публичный ГО-префаб)
Debug.Log (rbutton.transform.parent.gameObject.name);
btn = rbutton.GetComponent<Button> ();
btn.onClick.AddListener (() => InventoryRemove (invItem, rbutton, rtransform));
}
void InventoryRemove (GameObject invItem,GameObject rbutton, RectTransform rtransform) {
Destroy (btn.transform.parent.gameObject); // удаляет своего родителя ( и себя заодно)
// тут будут еще строки после решения проблемы с кнопкой
}
Не понимаю в чем проблема, код можно не модернизировать, прошу лишь логической помощи и наводок. Спасибо.