我有一些暂停菜单文字,当我暂停游戏时我希望它显示。它没有显示,我不完全确定为什么,这就是我发布这个问题的原因。这是我的代码。
if (!paused)
{
if (AccessMGame || AccessCampaign)
{
PlayerStatus.Update();
EntityManager.Update();
EnemySpawner.Update();
ParticleManager.Update();
}
}
else
{
pauseMenuGameState = true;
}
此代码指示游戏是否暂停,如果游戏未暂停,则更新游戏,如果将pauseMenuGameState
设置为true。这是我试图用我的文字显示的代码。
if (pauseMenuGameState == true)
{
Color color2 = Color.White;
spriteBatch.Begin(SpriteSortMode.Texture, BlendState.Additive);
DrawCenterAlignedString("Paused", ScreenSize.Y / 2 - 100, color2);
spriteBatch.End();
}
最后,DrawCenterAlignedString
函数。
public void DrawCenterAlignedString(string text, float y, Color color)
{
var textWidth = Art.Font.MeasureString(text).X;
spriteBatch.DrawString(Art.Font, text, new Vector2(ScreenSize.X / 2 - textWidth + textWidth / 2, y), color);
}
注意:暂停变量的取消是public static bool paused = false;
,暂停菜单游戏状态变量的声明是public static bool pauseMenuGameState;
我调试了我的程序以找出代码是否已到达,并且某些原因是没有绘制文本。
我认为这些方法是造成问题的原因。
private static bool _isPaused = false;
public static void pauseMenu()
{
if (Input.WasKeyPressed(Keys.P))
{
_isPaused = true;
GameRoot.paused = !GameRoot.paused;
}
}
public static bool isPaused()
{
return _isPaused;
}
答案 0 :(得分:-1)
根据the MSDN description of SpriteBatch.DrawString(),我认为没有错误。您是否检查过代码是否到达,以及计算出的字符串宽度是否正确?您应该将所有参数记录到控制台以进行调试。您还应该检查this basic example from the MSDN是否适合您。