XNA -没有绘制文本
本文关键字:绘制 文本 XNA | 更新日期: 2023-09-27 18:11:17
我有一些暂停菜单文本,当我暂停游戏时,我希望它显示。它没有显示,我不完全确定为什么,这就是为什么我发布了这个问题。这是我的代码。
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;
}
根据SpriteBatch.DrawString()的MSDN描述,我没有看到任何错误。您是否检查是否到达了代码,并且字符串的计算宽度是否正确?您应该将所有参数记录到控制台以进行调试。您还应该检查这个来自MSDN的基本示例是否适合您。