わかりましたので、ハイスコアシステムを作成しようとしていて、オブジェクト内でクラスの配列を使用していますが、タイトルにエラーが表示され、何らかの理由でオブジェクトが null 変数でいっぱいであることを示しています。ここに私のクラスがあります:
class HighScores
{
public HighScore[] MyScores = new HighScore[5];
protected bool failedRead = false;
private void SortHighScores(string NewName, int NewScore)
{
HighScore[] TmpScores = new HighScore[6];
for (int i = 0; i < 5; i++)
{
TmpScores[i].Name = MyScores[i].Name; // Error Occurs here for `MyScores[i].Name` however in output box both MyScores and TmpScores show null
TmpScores[i].Score = MyScores[i].Score;
}
TmpScores[5].Name = NewName;
TmpScores[5].Score = NewScore;
Array.Sort(TmpScores, delegate(HighScore x, HighScore y) { return x.Score.CompareTo(y.Score); });
Array.Reverse(TmpScores);
MyScores = new HighScore[5];
for (int i = 0; i < 5; i++)
{
MyScores[i].Name = TmpScores[i].Name;
MyScores[i].Score = TmpScores[i].Score;
}
}
}
class HighScore
{
public string Name = "hello world";
public int Score = 0;
}
そして、ここでオブジェクトを初期化しますHighScores
:
HighScores GameScores;
protected override void Initialize()
{
base.Initialize();
GameScores = new Highscores();
}
私がそれらを作成した場合、確かにオブジェクトはnullであってはなりませんnew
か?
[編集]
では、クラス HighScores 内に新しい関数を作成して、MyScores オブジェクトを新しい HighScore オブジェクトとして初期化しました。
public void InitScores()
{
for (int i = 0; i < 5; i++)
{
MyScores[i] = new HighScore();
}
}
これは内部で呼び出されますprotected override void Initialize()
(XNA の標準です)。クラス関数にも同じコードを追加しました: GameScores.SortHighScores
to initialise TmpScores
.
それでも同じエラー、発生する場所は同じですが、アイデアはありますか?