1

我有一个我们称之为 GM 的 GameObject。附加到它的是一个脚本,该脚本旨在成为游戏的主要逻辑控制器。

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

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>,并适当地更改所有内容-没有骰子。

有任何想法吗?

4

2 回答 2

4

我的猜测是,您可能在//large amount of object initializing here创建新clEquipment.

_master_equipment_list[0] = new clEquipment {
    ... //check for nulls here
};
于 2013-02-28T02:46:31.087 回答
0

您可能想要发布 clEquipment 类的代码。你说你尝试初始化每个对象......你在断线之前这样做了吗?如果它没有破裂,那是一个好兆头。

另外,很难从您的代码中分辨出来,但是您是否需要在初始化时中断的“()”?只是一个想法

_master_equipment_list[0] = new clEquipment () {
于 2013-02-28T02:48:59.203 回答