Menu xna如何在游戏中设置控件
我希望能够进入我正在开发的游戏中的选项菜单并设置我的控件。 这是一个简单的乒乓球游戏(目前),每个玩家的控制只是上下浮动 这就是我希望这个过程的样子:我单击设置控件,游戏显示我应该更改的控件的名称并等待,我单击键盘上我希望更改的按钮,游戏读取它并显示我应该更改的下一个控件,依此类推,直到我更改所有控件 我已经找到了一种方法,现在我的代码基本上如下所示:Menu xna如何在游戏中设置控件,menu,xna,key,controls,installation,Menu,Xna,Key,Controls,Installation,我希望能够进入我正在开发的游戏中的选项菜单并设置我的控件。 这是一个简单的乒乓球游戏(目前),每个玩家的控制只是上下浮动 这就是我希望这个过程的样子:我单击设置控件,游戏显示我应该更改的控件的名称并等待,我单击键盘上我希望更改的按钮,游戏读取它并显示我应该更改的下一个控件,依此类推,直到我更改所有控件 我已经找到了一种方法,现在我的代码基本上如下所示: if (optionsBList.IsButtonClicked("SETUP CONTROLS")) //when i click the
if (optionsBList.IsButtonClicked("SETUP CONTROLS")) //when i click the
//SETUP CONTROLS button
//in the options menu
{
KeyboardState currentKeyboardState = new KeyboardState();
waitingForKey = true;
while (waitingForKey)
{
if(currentKeyboardState.GetPressedKeys().Count() > 0)
{
player1.upkey = currentKeyboardState.GetPressedKeys()[0];
//the path for the key isn't player1.upkey, but lets say it is.
waitingForKey = false;
}
}
}
在这段简短的代码中,我的目标是只更改一个键。如果我能让它改变1键,改变更多不会是一个问题
问题是,当我点击设置控制按钮时,我不明白为什么我的游戏停止响应。我没有看到无限循环,也没有内存泄漏。
为什么我的游戏会崩溃?有没有更好的方法来加载选项菜单中的控件?如果你看到问题中链接的答案,你会注意到他实际上删除了
而循环,并将其作为如果语句
正如Nico Schertler所说:“while(waitingForKey)是你的无限循环。这个循环会阻塞游戏线程,因此无法识别进一步的输入。”
从您的链接链接到答案:
while(waitingForKey)
是您的无限循环。该循环会阻塞游戏线程,因此无法识别进一步的输入。将while
更改为if
应该可以工作,只要每次更新时都执行此代码。现在它不会崩溃,但不再工作。我没有提到这种代码的和平是不断更新的,所以对此感到抱歉。
if (optionsBList.IsButtonClicked("SETUP CONTROLS")) //when i click the
//SETUP CONTROLS button
//in the options menu
{
KeyboardState currentKeyboardState = new KeyboardState();
waitingForKey = true;
if (waitingForKey )
{
if(currentKeyboardState.GetPressedKeys().Count() > 0)
{
player1.upkey = currentKeyboardState.GetPressedKeys()[0];
//the path for the key isn't player1.upkey, but lets say it is.
waitingForKey = false;
}
}
}