GameStateManagement を使用していますが、ゲームのメモリに問題があります。ゲームの各セグメントを別の画面として持っています。ロゴ用の画面、本編用の画面などがあります。画面の管理が間違っていたと思いますが、問題に関する情報を見つけるのに苦労しています。
このロゴ画面がタイトル メニュー画面に移動すると、このロゴ画面のメモリ リソースが解放されないようで、すべての画面でその問題が発生しているようで、メモリがかなりスタックし始めます。UnloadContent を正しく実行していますか? UnloadContent の下のテクスチャなどで Dispose() を呼び出す必要がありますか? 画面を正しく削除していますか? 私が正しくやっていないことについて何か考えはありますか?
ここに私のロゴ画面があります:
namespace Tower_Defense
{
class Logo : GameScreen
{
Tower_Defense curGame;
GraphicsDeviceManager graphics;
AudioManager audioManager;
Texture2D logoTexture;
int gamecycles;
public Logo(Tower_Defense game, GraphicsDeviceManager g, AudioManager am)
{
curGame = game;
audioManager = am;
graphics = g;
EnabledGestures = GestureType.Tap;
}
public override void LoadContent()
{
base.LoadContent();
logoTexture = Load<Texture2D>("Textures/Backgrounds/logo");
gamecycles = 0;
}
public override void UnloadContent()
{
base.UnloadContent();
}
public override void Draw(GameTime gameTime)
{
ScreenManager.SpriteBatch.Begin();
ScreenManager.SpriteBatch.Draw(logoTexture, Vector2.Zero, Color.White);
ScreenManager.SpriteBatch.End();
}
public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen)
{
gamecycles++;
if (gamecycles >= 60)
{
ScreenManager.AddScreen(new TitleScreen(curGame, graphics, audioManager, false), null);
this.UnloadContent();
ScreenManager.RemoveScreen(this);
}
base.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen);
}
}
}