现在我正在制作一个平台游戏类型的游戏,我很难使用转义键退出全屏模式(进入窗口模式)。我一直在互联网上试图找到解决方案,而我还没有找到任何可以帮助我的方法。
这是我在游戏中实现的第一件事,所以我还没有很多代码。
构造
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();
}
非常感谢任何帮助,感谢您花时间阅读本文和/或回答。
答案 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。