Как псевдоним Xbox 360 кнопок в C #? - PullRequest
3 голосов
/ 26 ноября 2010

Я новичок в C Sharp и пишу игру для XNA Framework.

Я пытаюсь установить переменные для кнопок на контроллере XBox 360, чтобы я мог перенастроить кнопки 'игра функционирует в одном месте и не нужно менять прямые ссылки на кнопки везде.

Так что если я хочу назначить кнопку для «атаки», вместо этого:

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

Iхочу сделать это:

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

Есть идеи?Я уверен, что это очень простое решение, но я попробовал несколько подходов, и ни один еще не работал.Спасибо!

Ответы [ 3 ]

5 голосов
/ 26 ноября 2010

Buttons это просто перечисление, поэтому вам просто нужно создать переменную с таким именем, как

Buttons MyAttackButton = Buttons.B;
2 голосов
/ 26 ноября 2010

Альтернативой может быть определение где-нибудь перечисления:

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

Затем для его проверки:

if (gamePadState.IsButtonDown((Buttons)MyButtons.DefendButton))
1 голос
/ 29 ноября 2010

Вы также можете создать словарь:

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

Преимущество этого метода в том, что карту кнопок можно изменить во время выполнения, чтобы вы могли использовать ее для реализации настраиваемых параметров управления.

...