【发布时间】:2012-10-25 05:08:05
【问题描述】:
我正在使用 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);
}
}
}
【问题讨论】:
-
你如何测量内存使用情况?
标签: c# memory-management dispose xna-4.0