使用初始化器创建对象数组似乎会失败

本文关键字:失败 数组 创建对象 初始化 | 更新日期: 2023-09-27 18:01:33

我有一个GameObject,我们将其称为GM,它是一个脚本,这意味着游戏的主要逻辑控制器。

在这个脚本的某个地方,我有:

private dbEquipment equipment_database = new dbEquipment();

来自dbeequipment .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>,并适当地改变一切——没有骰子。

任何想法?

使用初始化器创建对象数组似乎会失败

我的猜测是,当你创建一个新的clEquipment时,你可能在//large amount of object initializing here部分包含一个空引用。

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

您可能想要发布设备类的代码。你说你尝试初始化每个对象…你是在换行前做的吗?如果它没有破裂,那是一个好兆头。

同样,很难从你的代码,但你需要一个"()"在初始化,它打破了吗?只是一个想法

_master_equipment_list[0] = new clEquipment () {