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;
    }

XNA -没有绘制文本

根据SpriteBatch.DrawString()的MSDN描述,我没有看到任何错误。您是否检查是否到达了代码,并且字符串的计算宽度是否正确?您应该将所有参数记录到控制台以进行调试。您还应该检查这个来自MSDN的基本示例是否适合您。