我是C Sharp的新手,并且正在使用XNA Framework编写游戏。
我正在尝试为XBox 360控制器上的按钮建立变量,因此我可以在一个地方重新配置按钮的游戏功能,而不必在任何地方更改对按钮的直接引用。
因此,如果我想为“攻击”指定一个按钮,而不是:
if (gamePadState.IsButtonDown(Buttons.B)
{
// do game logic
}
我想这样做:
if (gamePadState.IsButtonDown(MyAttackButton)
{
// do game logic
}
有什么想法吗?我确信这是一个非常简单的解决方案,但我已经尝试了几种方法,但还没有一种方法可行。谢谢!
答案 0 :(得分:5)
Buttons
只是一个枚举,所以你只需要创建一个具有该名称的变量,如
Buttons MyAttackButton = Buttons.B;
答案 1 :(得分:2)
另一种方法是在某处定义枚举:
public enum MyButtons
{
AttackButton = Buttons.B,
DefendButton = Buttons.A
}
然后测试它:
if (gamePadState.IsButtonDown((Buttons)MyButtons.DefendButton))
答案 2 :(得分: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...
}
此方法的优点是可以在运行时修改按钮映射,因此您可以使用它来实现可自定义的控件设置。