2010-11-26 2 views
3

Я новичок в C Sharp и написал игру с XNA Framework.Как псевдоним кнопки Xbox 360 на C#?

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

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

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

Я хочу, чтобы это сделать:

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

Любые идеи? Я уверен, что это очень простое решение, но я пробовал несколько подходов, и никто еще не работал. Благодаря!

ответ

5

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

Buttons MyAttackButton = Buttons.B; 
2

В качестве альтернативы можно определить перечисление где:

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

Затем, чтобы проверить его :

if (gamePadState.IsButtonDown((Buttons)MyButtons.DefendButton)) 
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... 
} 

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

+0

Помните, что использование перечислений в качестве словарных ключей будет генерировать мусор, если не используется пользовательский IComparer. На ПК это не проблема, но на Xbox 360 с ее менее чем звездным GC вы можете столкнуться с проблемами. –

Смежные вопросы