Input.GetKeyDown не работает должным образом в приложении Unity - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь переключить опцию пользовательского интерфейса с помощью нажатия клавиши, она работает с кнопкой пользовательского интерфейса, но не с командой Input.GetKeyDown.

Фрагмент кода находится в функции, которая вызывается из OnGui. «Toggle» переключает логическую переменную, которая контролирует, виден ли пользовательский интерфейс. Затем я попытался использовать тумблер с отдельным действием (добавление текста на экран), и оно, похоже, работает, но оно происходит ровно 6 раз при каждом нажатии (следовательно, пользовательский интерфейс остается выключенным даже после нажатия клавиши). информация, весь пользовательский интерфейс находится в другом классе. Фрагмент находится в публичной статической функции. Функция вызывается из OnGUI другого активного класса.

if (Input.GetKeyDown(KeyCode.Space))
    {
        Telelog.Toggle = !Telelog.Toggle;
    }   

Как и когда я делал то же самое с кнопкой, я ожидал, что пользовательский интерфейс выскочит при нажатии клавиши пробела. Не работает так, как задумано.

1 Ответ

2 голосов
/ 25 июня 2019

OnGUI

может вызываться несколько раз за кадр (один вызов на событие)

, поэтому он вызывается более одного раза за кадр. Не стоит менять там свой флаг. GetKeyDown сбрасывается в конце кадра, поэтому для всех вызовов OnGUI в этом кадре будет true.


Лучше сделать переключение в Update.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...