2016-11-04 1 views
-3

Это моя система для экипировки оружия, но я не могу понять, как проверить, нажата ли я.Unity c: Как определить, была ли нажата клавиша определенного int, которую вы сохранили как переменную

for (int i = 0; i < gunController.Guns.Length; i++) { 
      if (Input.GetKeyDown(i)) { 
       gunController.EquipWeapon(gunController.Guns[i]); 
      } 

     } 
+0

Так что происходит, когда вы используете этот код? – UnholySheep

+0

В какой переменной хранятся ключи? Нет переменной, в которой хранится информация о ключе в данный момент. – Programmer

+1

Я не использую Unity, но на основе этого https://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html вы должны попробовать if (Input .GetKeyDown (i.ToString())) – ChronosMOT

ответ

0

Согласно Unity Docs (for Unity3D 5.4), то GetKeyDown функция Input имеет две перегрузки:

  1. Input.GetKeyDown(string name) где name это имя ключа нажат
  2. Input.GetKeyDown(KeyCode key) где key является значением KeyCode перечислимого для ключ.

Nota bene: вторая перегрузка (Input.GetKeyDown(KeyCode key)) - лучшая практика.

В принципе, нет перегрузки, что имеетintв качестве параметра.i - int.

Вы можете исправить эту проблему, сделав массив/словарь/список (или что-то еще) с помощью Guns и их соответствующих KeyCode s или string s.