菜单索引键问题

本文关键字:问题 索引 菜单 | 更新日期: 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来存储先前的状态。