XNA - 未绘制文本

时间:2015-09-04 16:03:52

标签: c# xna drawing

我有一些暂停菜单文字,当我暂停游戏时我希望它显示。它没有显示,我不完全确定为什么,这就是我发布这个问题的原因。这是我的代码。

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

1 个答案:

答案 0 :(得分:-1)

根据the MSDN description of SpriteBatch.DrawString(),我认为没有错误。您是否检查过代码是否到达,以及计算出的字符串宽度是否正确?您应该将所有参数记录到控制台以进行调试。您还应该检查this basic example from the MSDN是否适合您。