Задать вопрос
@AndRussia

Как правильно обратиться к функции в классе?

Здравствуйте. У меня имеется метод 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
PQHDF.png
и при использовании 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);
  • Вопрос задан
  • 152 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Stepik
    Профессия "C# разработчик"
    1 неделя
    Далее
  • XYZ School
    C# для разработки игр
    5 месяцев
    Далее
  • Учебный центр IBS
    DEV-001_NET Шаблоны проектирования GoF. Редакция для .NET
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
inv.AddItem(0, inv.items[1], 1);
Вы только что создали пустой инвентарь, но пытаетесь добавить (хотя по коду заменить) нулевой элемент первым элементов.
Откуда берётся первый элемент для замены?
Откуда берётся нулевой элемент под замену?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы