キーを取得しようとしたときに問題はありませんが、辞書から値を取得しようとしたときに問題がありました。値は2つのフィールドを含むクラスで、2つのパラメーターを持つコンストラクターがあります。ここ はコードです:LINQを使用して辞書の値を取得しようとしたときにNullReferenceExceptionが発生しました
public class SetupWeapon {
public int poolSize;
public GameObject prefab;
public SetupWeapon(int size, GameObject goPrefab) {
this.poolSize = size;
this.prefab = goPrefab;
}
}
private SetupWeapon[] _setupWeapon = new SetupWeapon[1];
private Dictionary<int, SetupWeapon> _weaponData = new Dictionary<int, SetupWeapon>();
public int[] AttackIDs {
get {
var toArray = _weaponData.Select(a => a.Key).ToArray();
return toArray;
}
}
private int[] PoolSize {
get {
var toArray = _weaponData.Select(a => a.Value.poolSize).ToArray();
return toArray;
}
}
private GameObject[] Prefab {
get {
var toArray = _weaponData.Select(a => a.Value.prefab).ToArray();
return toArray;
}
}
void Start() {
CollectData(setPhysical); // collecting data
CollectData(setLeftEye);
CollectData(setRightEye);
CollectData(setForehead);
CollectData(setMouth);
for (int i = 0; i < AttackIDs.Length; i++){
Debug.Log(AttackIDs[i]); // works just fine
Debug.Log(_weaponData[0].poolSize); // works just fine
Debug.Log(_weaponData[0].prefab.name); // works just fine
Debug.Log(PoolSize[0]); // NullReferenceException
Debug.Log(Prefab[0].name); // NullReferenceException
}
}
私はこのエラーの原因となる重要な何かを見逃していましたか?
[NullReferenceExceptionとは何か、それを修正するにはどうすればいいですか?](https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) – rene
スレッドが私の問題を解決したとは思わない。私の場合、それはちょうど私にNullReferenceExceptionを与える値の部分です。そして、このコード行は奇妙だと思いませんか? 'Debug.Log(_weaponData [0] .poolSize); //うまく動作します Debug.Log(_weaponData [0] .prefab.name); //うまく動作します Debug.Log(PoolSize [0]); // NullReferenceException Debug.Log(Prefab [0] .name); // NullReferenceException' –
あなたは_weaponData辞書を初期化していないようです。作成されましたが、要素は追加されていません –