1

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>-サイコロはありません。

何か案は?

4

2 に答える 2

4

私の推測では//large amount of object initializing here、新しいを作成するときに言うセクションにnull参照が含まれている可能性があります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 に答える