菜单索引键问题
本文关键字:问题 索引 菜单 | 更新日期: 2023-09-27 18:33:07
语言: C#
描述:所以目前我正在XNA中制作一个小游戏。我正在为游戏创建一个菜单。我有 3 个菜单菜单状态。1= 选项菜单,2= 开始菜单,3= 加载菜单。因此,目标是当用户按"D"键时,菜单索引递增 1,对于"A"键,菜单递减。这样做的问题是在XNA中使用KeyDown正在更新每个Tick。因此,当我增加/减少索引时,它会以快速的方式更新。我希望用户能够切换菜单而不会非常快速地闪烁。下面是我的代码,请让我知道任何解决方案。
if(keyboard.IsKeyDown(Keys.D))
{
LyEngine.Game.MENU_INDEX++;
if (LyEngine.Game.MENU_INDEX >= 3)
{
LyEngine.Game.MENU_INDEX = 1;
}
}
else if (keyboard.IsKeyDown(Keys.A))
{
LyEngine.Game.MENU_INDEX--;
if (LyEngine.Game.MENU_INDEX <= 1)
{
LyEngine.Game.MENU_INDEX = 3;
}
}
与其在
键关闭时更改菜单索引,不如捕获键在一个刻度上升和键在下一个刻度下降之间的过渡。
为此,请保存密钥状态的先前值并将其添加到您的条件中:
if(keyboard.IsKeyDown(Keys.D) && !keyWasDown[Keys.D])
{
// ...
}
keyWasDown[Keys.D] = keyboard.IsKeyDown(Keys.D)
您必须创建字典keyWasDown
来存储先前的状态。