使用C#XNA 4.0

时间:2015-11-23 03:18:41

标签: c# xna fullscreen

现在我正在制作一个平台游戏类型的游戏,我很难使用转义键退出全屏模式(进入窗口模式)。我一直在互联网上试图找到解决方案,而我还没有找到任何可以帮助我的方法。

这是我在游戏中实现的第一件事,所以我还没有很多代码。

构造

     graphics = new GraphicsDeviceManager(this);
        // screen size windowed
        if (IsFullScreenEnabled == false)
        {
            graphics.PreferredBackBufferHeight = 730;
            graphics.PreferredBackBufferWidth = 1000;
        }
        // fullscreen
        if (IsFullScreenEnabled == true)
        {
            graphics.IsFullScreen = true;
        }
        // mouse visible
        IsMouseVisible = true;

以下是转义键的代码:

    if (ks.IsKeyDown(Keys.Escape))
        {
            graphics.IsFullScreen = false;
            graphics.ApplyChanges();
        }

非常感谢任何帮助,感谢您花时间阅读本文和/或回答。

1 个答案:

答案 0 :(得分:0)

屏幕设置后

IsFullScreen无效。

在游戏过程中,您应该使用GraphicsDeviceManager.ToggleFullScreen

MSDN:

  

在全屏和窗口模式之间切换。此方法对Xbox 360没有影响。

替换

    graphics.IsFullScreen = false;
    graphics.ApplyChanges();

...与:

    graphics.ToggleFullScreen ();

......正如Bjarke所提到的,您可能希望确保上述语句的警惕正确检查先前和当前的键盘状态,以确定是按下并释放的键而不仅仅是 >是键以避免不必要的和重复的屏幕切换。请参阅 Detecting a Key Press

MSDN示例:

    private void UpdateInput()
    {
        KeyboardState newState = Keyboard.GetState();
        // Is the SPACE key down?
        if (newState.IsKeyDown(Keys.Space))
        {
            // If not down last update, key has just been pressed.
            if (!oldState.IsKeyDown(Keys.Space))
            {
                backColor = 
                    new Color(backColor.R, backColor.G, (byte)~backColor.B);
            }
        }
       .
       .
       .
        // Update saved state.
        oldState = newState;
    }

这假设您的视频卡和/或驱动程序能够在窗口中显示3D。

告诉我更多