XNA(C#で記述)を使用して作成したWindowsGameLibraryがあります。これには、Gameクラスの独自の拡張機能が含まれています。何らかの理由で、オーバーライドされたバージョンのLoadContentが呼び出されることはありません。フォーラムで、base.Initialize()を最後に追加せずに誤ってInitializeをオーバーライドしたことが原因である可能性があることを読みましたが、それを確認しても機能しません。Gameの拡張子を含む名前空間は、「Program」クラスを含む実際のWindowsGameプロジェクトの名前空間とは別のものであることに注意してください。ただし、それは問題ではないと思います。以下は私のコードです:
public AttunedGame()
{
// Singleton
if (Instance == null) Instance = this;
this.currentArea = "";
}
protected override void Initialize()
{
// Managers
graphics = new GraphicsDeviceManager(this);
currentGameTime = new GameTime(new TimeSpan(0), new TimeSpan(0));
// Areas
areas = new CollectibleCollection<Area>();
foreach (string a in Directory.EnumerateDirectories(@"content\areas"))
{
areas.Add(new Area(a));
areas.Get(Collectible.IDFromPath(a)).Initialize();
}
base.Initialize();
}
protected override void LoadContent()
{
spriteBatch = new AnimatedSpriteBatch(this.GraphicsDevice);
}
// Main loop methods
protected override void Update(GameTime gameTime)
{
currentGameTime = gameTime;
CurrentArea.Update();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
currentGameTime = gameTime;
SpriteBatch.Begin();
CurrentArea.Draw();
SpriteBatch.End();
base.Draw(gameTime);
}
ここに示すすべてのメソッドにブレークポイントを設定して、プログラムフローがどこに向かっているのかを確認しました。最初にコンストラクターにヒットし、次にInitialize(最後まで一度に1行ずつステップ実行しました)、次にUpdate、次にDrawに移動しました。しばらくループさせても、LoadContentに到達することはありませんでした。
助けてくれてありがとう。