Копировать выделенный пользовательский интерфейс вверх, вниз, влево, вправо в коде для использования с голосовым управлением - PullRequest
1 голос
/ 08 июля 2019

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

У меня нет проблем с работой распознавания голоса.Я просто не могу понять, как переместить выделение вверх, вниз, влево или вправо в коде.К сожалению, я не могу найти информацию о том, как копировать нажатия клавиш со стрелками.Я ожидал, что смогу использовать SendKeys (), но он не доступен в Unity.Есть ли способ сделать это в Unity?

Любая помощь очень ценится.

1 Ответ

1 голос
/ 08 июля 2019

Вам придется самостоятельно разработать часть распознавания голоса, поскольку я только немного поработал с ней, но я подозреваю, что «хорошо, теперь, когда я знаю, что пользователь сказал« следующий », я не уверен, как»чтобы перейти к следующему полю », вам нужна помощь.

Selectable selected = EventSystem.current.currentSelectedGameObject.GetComponent<Selectable>();

Это позволит получить экземпляр компонента Selectable того, что в данный момент выбрано.Это может быть кнопка, поле ввода или что-то еще.Есть множество вещей, которые унаследованы от него.

Теперь, навигация:

selected.FindSelectableOnLeft();
selected.FindSelectableOnRight();
selected.FindSelectableOnUp();
selected.FindSelectableOnDown();

И есть ваши четыре направления.Как только у вас есть Selectable to target, просто наберите Select().

Не все из них гарантированно будут ненулевыми (и даже selected может быть нулевым!)так что вы захотите выполнить нулевые проверки, прежде чем делать что-либо еще.

Надеюсь, это заполнит недостающие фрагменты.

...