如何在 C# 中为 Xbox 360 按钮添加别名?

发布于 2024-10-04 07:35:11 字数 402 浏览 10 评论 0原文

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

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

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

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

我想这样做:

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

有什么想法吗?我确信这是一个非常简单的解决方案,但我已经尝试了多种方法,但还没有奏效。谢谢!

I'm new to C Sharp, and writing a game w/ the XNA Framework.

I'm trying to establish variables for the buttons on the XBox 360 controller, so I can reconfigure the buttons' game functions in one place and not have to change direct references to the buttons everywhere.

So if I want to assign a button to "attack", instead of this:

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

I want to do this:

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

Any ideas? I'm sure it's a very simple solution, but I've tried several approaches and none have worked yet. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

兮颜 2024-10-11 07:35:11

Buttons 只是一个枚举,因此您只需创建一个具有该名称的变量,例如

Buttons MyAttackButton = Buttons.B;

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

Buttons MyAttackButton = Buttons.B;
十级心震 2024-10-11 07:35:11

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

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

然后测试它:

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

An alternative would be to define an enum somewhere:

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

Then to test it:

if (gamePadState.IsButtonDown((Buttons)MyButtons.DefendButton))
记忆里有你的影子 2024-10-11 07:35:11

您还可以创建一个字典:

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

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

You could also create a dictionary:

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

The advantage of this method is that the button map can be modified at runtime, so you can use it to implement customizable control settings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文