Базовая система — MRTK2
В основе системы ввода лежит inputSystem, которая представляет собой службу, которая отвечает за инициализацию и управление всеми функциями, связанными с вводом, связанными с MRTK.
Примечание
Предполагается, что читатели уже прочитали и имеют базовое представление о разделе терминологии .
Эта служба отвечает за:
- Чтение профиля системы ввода
- Запуск настроенных поставщиков данных (например,
Windows Mixed Reality Device Manager
иOpenVR Device Manager
). - Создание экземпляра GazeProvider, который является компонентом, отвечающим за предоставление сведений о взгляде в стиле HoloLens (1-го поколения) в дополнение к HoloLens 2 информации о взгляде стиля.
- Создание экземпляра FocusProvider, который является компонентом, отвечающим за определение объектов с фокусом. Более подробно это описано в разделе указателей и фокуса документации.
- Предоставление точек регистрации для всех событий ввода (в качестве глобальных прослушивателей).
- Предоставление возможностей диспетчеризации событий для этих входных событий.
События ввода
События ввода обычно запускаются в двух разных каналах:
Объекты в фокусе
События можно отправлять непосредственно в объект GameObject с фокусом. Например, объект может иметь скрипт, реализующий IMixedRealityTouchHandler
.
Этот объект будет получать события касания при фокусе рукой, которая находится рядом с ним. Эти типы событий идут вверх по иерархии GameObject, пока не найдет GameObject, способный обрабатывать событие.
Для этого используется ExecuteHierarchy из реализации системы ввода по умолчанию.
Глобальные прослушиватели
События можно отправлять в глобальные прослушиватели. Можно зарегистрироваться для всех входных событий с помощью интерфейса системы IMixedRealityEventSystem
ввода. Рекомендуется использовать метод RegisterHandler для регистрации глобальных событий. Нерекомендуемая Register
функция приведет к тому, что прослушиватели будут получать уведомления обо всех событиях ввода, а не только о событиях ввода определенного типа (где тип определяется интерфейсом событий).
Обратите внимание, что резервные прослушиватели — это еще один тип глобальных прослушивателей, которые также не рекомендуется, так как они будут получать каждое событие ввода, которое не было обработано в другом месте сцены.
Порядок отправки событий
Как правило, события отправляются прослушивателям следующим образом. Обратите внимание, что если какой-либо из описанных ниже шагов помечает событие как обработанное, процесс отправки событий останавливается.
- Событие отправляется в глобальные прослушиватели.
- Событие отправляется в модальные диалоговые окна фокусировочного объекта.
- Событие отправляется в объект фокусировки.
- Событие отправляется в резервные прослушиватели.
Диспетчеры устройств и поставщики данных
Эти сущности отвечают за взаимодействие с API более низкого уровня (например, API Windows Mixed Reality или OPENVR) и преобразование данных из этих систем в те, которые соответствуют более высоким уровням входных абстракций MRTK. Они отвечают за обнаружение, создание и управление временем существования контроллеров.
Базовый поток диспетчера устройств включает в себя:
- Экземпляр диспетчера устройств создается службой системы ввода.
- Диспетчер устройств регистрируется в своей базовой системе (например, Windows Mixed Reality диспетчер устройств будет регистрироваться для событий ввода и жестов.
- Он создает контроллеры, обнаруженные из базовой системы (например, поставщик может обнаружить наличие шарнирных рук).
- В цикле Update() вызовите Метод UpdateController(), чтобы опросить новое состояние базовой системы и обновить представление контроллера.