使用C#XNA 4.0中的转义键切换全屏

本文关键字:转义 C#XNA 使用 | 更新日期: 2023-09-27 18:23:50

现在我正在开发一款平台游戏,我很难使用退出键退出全屏模式(进入窗口模式)。我一直在互联网上寻找解决方案,但我还没有找到任何能帮助我的东西。

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

施工单位:

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

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

使用C#XNA 4.0中的转义键切换全屏

IsFullScreen在屏幕设置后不起作用。

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

MSDN:

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

更换

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

带有:

    graphics.ToggleFullScreen ();

正如Bjarke所提到的,您可能需要确保您对上述语句的保护正确检查之前和当前的键盘状态,以确定是按下和释放的键,而不仅仅是键是按下的以避免不必要的和重复的屏幕切换。请参阅检测按键

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。

告诉我更多

  • 在窗口和全屏之间切换