Создание массива объектов с использованием инициализаторов кажется неудачным

У меня есть GameObject, который мы назовем GM. К нему прилагается скрипт, который должен быть основным логическим контроллером для игры.

В этом сценарии где-то у меня есть:

private dbEquipment equipment_database = new dbEquipment();

Соответствующий фрагмент из dbEquipment.cs:

public class dbEquipment {
    private int total_items = 13;
    private clEquipment[] _master_equipment_list;

    public dbEquipment() {
        _master_equipment_list = new clEquipment[total_items];
        _master_equipment_list[0] = new clEquipment {
            ... //large amount of object initializing here
        };
        ... //etc, for all 13 items
    }
}

Когда я запускаю Unity, я получаю:

NullReferenceException: Object reference not set to an instance of an object

Указано на линии:

_master_equipment_list[0] = new clEquipment { ...

Я попытался запустить массив и сначала инициализировать каждый объект clEquipment пустым clEquipment():

for(int x = 0; x < total_items; x++) { _master_equipment_list[x] = new clEquipment(); }

просто чтобы быть полностью уверенным, что массив был фактически заполнен, но я получил тот же результат.

Я также попытался изменить это, чтобы быть List<clEquipment>и меняя все соответствующим образом - без кубиков.

Есть идеи?

2 ответа

Решение

Я предполагаю, что вы могли включить нулевую ссылку в разделе, который говорит //large amount of object initializing here когда вы создаете новый clEquipment,

_master_equipment_list[0] = new clEquipment {
    ... //check for nulls here
};

Возможно, вы захотите опубликовать код для класса clEquipment. Вы говорите, что пытались инициализировать каждый объект... Вы делали это до разрыва строки? Если это не сломалось, это хороший знак.

Кроме того, по вашему коду трудно сказать, но вам нужна "()" в инициализации, где он ломается? Просто мысль

_master_equipment_list[0] = new clEquipment () {
Другие вопросы по тегам