3

我是 C Sharp 的新手,正在使用 XNA 框架编写游戏。

我正在尝试为 Xbox 360 控制器上的按钮建立变量,这样我就可以在一个地方重新配置按钮的游戏功能,而不必更改对各处按钮的直接引用。

因此,如果我想为“攻击”分配一个按钮,而不是这样:

if (gamePadState.IsButtonDown(Buttons.B)
{
   // do game logic
}

我想做这个:

if (gamePadState.IsButtonDown(MyAttackButton)
{
   // do game logic
}

有任何想法吗?我确信这是一个非常简单的解决方案,但我尝试了几种方法,但都没有奏效。谢谢!

4

3 回答 3

5

Buttons is just an enum, so you just need to create a variable with that name like

Buttons MyAttackButton = Buttons.B;
于 2010-11-26T04:36:36.690 回答
2

另一种方法是在某处定义一个枚举:

public enum MyButtons
{
    AttackButton = Buttons.B,
    DefendButton = Buttons.A
}

然后对其进行测试:

if (gamePadState.IsButtonDown((Buttons)MyButtons.DefendButton))
于 2010-11-26T07:45:33.013 回答
1

您还可以创建一个字典:

enum MyButtons { ShootButton, JumpButton }

Dictionary<MyButtons, Buttons> inputMap = new Dictionary<MyButtons, Buttons>()
{
    { MyButtons.ShootButton, Buttons.Y },
    { MyButtons.JumpButton,  Buttons.B },
}

...

if (gamePadState.IsButtonDown(inputMap[MyButtons.ShootButton]))
{
    // Shoot...
}

这种方法的优点是可以在运行时修改按钮映射,因此您可以使用它来实现可自定义的控件设置。

于 2010-11-29T19:49:52.993 回答