Da_Vinchi_Official
@Da_Vinchi_Official

Как я могу конвертировать if?

Как я могу и могу ли вообще конвертировать много if с (Input....) Пример:
int i;

void example ()
{
   if(Input.GetKeyDown(KeyCode.1){
      i = 1;
   }
   if(Input.GetKeyDown(KeyCode.2){
         i = 2;
      }
   if(Input.GetKeyDown(KeyCode.3){
         i = 3;
      }
}

В более ефективный код?
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
В общем случае нет - всё равно в каком-то месте у тебя будет вызываться по Input.GetЧтотоТам.
И через цепочку if-ов и есть максимально эффективный вариант (если конечно ты проверяешь только те кнопки, которые есть смысл проверять)

Но вроде как в Unity появилась какая-то новая система для инпута, которая должна быть гибче:
https://gamedevbeginner.com/input-in-unity-made-ea...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ShockWave2048
@ShockWave2048
imposter
List<KeyCode> keysNums = new List<KeyCode> { KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4 };

void Update()
{
        foreach (var key in keysNums)
        {
            if ( Input.GetKeyDown(key))
            {
                int i = keysNums.IndexOf(key)];
                ....
            }
        }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
21 янв. 2022, в 11:48
2000 руб./за проект
21 янв. 2022, в 11:18
1000 руб./за проект
21 янв. 2022, в 11:17
30000 руб./за проект