繁体   English   中英

如何在C#中使用Xbox 360按钮?

[英]How to alias Xbox 360 buttons in C#?

我是C Sharp的新手,并且正在编写一个带有XNA Framework的游戏。

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

所以,如果我想指定一个“攻击”按钮,而不是:

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

我想做这个:

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

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

Buttons只是一个枚举,所以你只需要创建一个具有该名称的变量

Buttons MyAttackButton = Buttons.B;

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

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

然后测试一下:

if (gamePadState.IsButtonDown((Buttons)MyButtons.DefendButton))

你也可以创建一个字典:

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...
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM