Здравствуйте. У меня имеется метод AddItem в классе Inventory
public void AddItem(int id, Item item, int count)
{
items[id].id = item.id;
items[id].count = count;
items[id].itemGameObject.GetComponent<Image>().sprite = item.img;
if (count > 1 && item.id != 0)
{
items[id].itemGameObject.GetComponentInChildren<Text>().text = count.ToString();
} else
{
items[id].itemGameObject.GetComponentInChildren<Text>().text = "";
}
}
Я в другом файле, в классе RockTrigger пытаюсь в эту мою систему инвентаря добавить предмет
Inventory inv = new Inventory();
inv.AddItem(0, inv.items[1], 1);
В самом Unity задаю предметы для переменной items
и при использовании inv.AddItem(0, inv.items[1], 1); получаю следующую ошибку:
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Я так понял, он считает, что не существует предмета с id 1 в items. Но это не так. Что я делаю не правильно?
Update:
Я ошибся, нужно было использовать inv.data.items[1]. data берется из другого файла и класса
public class DataBase : MonoBehaviour
{
public List<Item> items = new List<Item>();
}
И ошибка соответственно уже другая
NullReferenceException: Object reference not set to an instance of an object
RockTrigger.Update () (at Assets/Scripts/RockTrigger.cs:26)
Та самая 26 строчка:
inv.AddItem(0, inv.data.items[1], 1);