Кнопки

Кнопка "Main"

Кнопка предоставляет пользователю возможность вызвать немедленное действие. Это один из самых базовых компонентов в смешанной реальности. МРТК предоставляет различные типы кнопок Prefabs.

Кнопка Prefabs в МРТК

Примеры кнопки Prefabs в MRTK/SDK/Features/UX/Interactable/Prefabs папке

Изображение или кнопки на основе графического интерфейса Unity

  • UnityUIInteractableButton.prefab
  • PressableButtonUnityUI.prefab
  • PressableButtonUnityUICircular.prefab
  • PressableButtonHoloLens2UnityUI.prefab

Кнопки на основе "конфликты"

PressableButtonHoloLens2 PressableButtonHoloLens2

PressableButtonHoloLens2Unplated PressableButtonHoloLens2Unplated

PressableButtonHoloLens2Circular PressableButtonHoloLens2Circular

кнопка в стиле оболочки HoloLens 2 с поддержкой обратной связи, которая поддерживает различные визуальные отзывы, такие как освещение, освещение и сжатая передняя пластина.

кнопка в стиле оболочки HoloLens 2 без формы

кнопка в стиле оболочки HoloLens 2 с круглой фигурой

PressableButtonHoloLens2_32x96 PressableButtonHoloLens2_32x96

PressableButtonHoloLens2Bar3H PressableButtonHoloLens2Bar3H

PressableButtonHoloLens2Bar3V PressableButtonHoloLens2Bar3V

32x96mm кнопка в стиле оболочки широкой HoloLens 2

горизонтальная HoloLens 2ная панель кнопок с общей службой

вертикальная HoloLens 2ная панель кнопок с общей службой

PressableButtonHoloLens2ToggleCheckBox_32x32 PressableButtonHoloLens2ToggleCheckBox_32x32

PressableButtonHoloLens2ToggleSwitch_32x32 PressableButtonHoloLens2ToggleSwitch_32x32

PressableButtonHoloLens2ToggleRadio_32x32 PressableButtonHoloLens2ToggleRadio_32x32

32x32mm флажок в стиле оболочки HoloLens 2

32x32mm коммутатора в стиле оболочки HoloLens 2

32x32mm радио в стиле оболочки HoloLens 2

PressableButtonHoloLens2ToggleCheckBox_32x96 PressableButtonHoloLens2ToggleCheckBox_32x96

PressableButtonHoloLens2ToggleSwitch_32x96 PressableButtonHoloLens2ToggleSwitch_32x96

PressableButtonHoloLens2ToggleRadio_32x96 PressableButtonHoloLens2ToggleRadio_32x96

32x96mm флажок в стиле оболочки HoloLens 2

32x96mm коммутатора в стиле оболочки HoloLens 2

32x96mm радио в стиле оболочки HoloLens 2

Радиальный радиальный

Флажок флажка

Тогглесвитч тогглесвитч

Радиальная кнопка

Флажок

Тумблер

ButtonHoloLens1 ButtonHoloLens1

Прессаблераундбуттон прессаблераундбуттон

Кнопка "Базовая" кнопки

кнопка стиля оболочки 1-го поколения HoloLens

Кнопка "круглая фигура"

Кнопка "базовый"

ButtonРесурсы (Asset/мртк/SDK/Features/UX/взаимодействовать/Prefabs/Button. prefab) основаны на взаимодействующей концепции, обеспечивающей простоту элементов управления пользовательского интерфейса для кнопок или других типов интерактивных поверхностей. Кнопка базовые показатели поддерживает все доступные входные методы, включая вводные данные для практических действий, а также взгляните + Air — касание для дальнего взаимодействия. Можно также использовать команду Voice для активации кнопки.

PressableButtonHoloLens2(assets/мртк/SDK/features/UX/взаимодействовать/Prefabs/PressableButtonHoloLens2. prefab) — это HoloLens 2 кнопка стиля оболочки, которая поддерживает точное перемещение кнопки для входных данных direct track. Он сочетает Interactable скрипт со PressableButton сценарием.

для HoloLens 2 рекомендуется использовать кнопки с непрозрачной службой. Прозрачные кнопки не рекомендуются из-за таких проблем с удобством использования и стабильностью:

  • Трудно прочитать значок и текст в физической среде.
  • Трудно понять, когда триггер события
  • Голограммы, отображаемые с помощью прозрачной плоскости, могут работать нестабильно с глубиной HoloLens 2 лср стабилизации

Пластина кнопки

Использование нажатых кнопок

Кнопки на основе пользовательского интерфейса Unity

Создание холста в сцене (GameObject-> пользовательского интерфейса > Canvas). На панели инспектора для холста:

  • Щелкните "преобразовать в МРТК холст".
  • Нажмите кнопку "добавить Неаринтерактионтаучаблеунитюи".
  • Установить масштаб X, Y и Z компонента преобразования Rect в значение 0,001

Затем перетащите PressableButtonUnityUI (Assets/мртк/SDK/Features/UX/взаимодействовать/Prefabs/прессаблебуттонунитюи. prefab), PressableButtonUnityUICircular (Assets/МРТК/SDK/Features/UX/взаимодействовать/Prefabs/прессаблебуттонунитюиЦиркулар. prefab) или PressableButtonHoloLens2UnityUI (Assets/мртк/SDK/FEATUREs/UX/взаимодействовать/Prefabs/PressableButtonHoloLens2UnityUI. prefab) на холст.

Кнопки на основе "конфликты"

Просто перетащите PressableButtonHoloLens2 (Assets/мртк/SDK/Features/UX/взаимодействовать/Prefabs/PressableButtonHoloLens2. prefab) или PressableButtonHoloLens2Unplated (Assets/МРТК/SDK/Features/UX/взаимодействовать/Prefabs/PressableButtonHoloLens2Unplated. prefab) в сцену. Эти кнопки Prefabs уже настроены на воспроизведение звука для различных типов входных данных, включая ввод с клавиатуры и взгляд.

События, предоставляемые в prefab, а также взаимодействующий компонент, можно использовать для активации дополнительных действий. Нажатые кнопки в сцене хандинтерактионексампле используют интерактивное событие OnClick для активации изменения в цвете Куба. Это событие активируется для различных типов методов ввода, таких как "взгляд", "Воздушный нажим", "рука-Ray", а также для нажатия физической кнопки с помощью сценария "нажатая кнопка".

How to Use Interactable

Можно настроить, когда нажатая кнопка вызывает событие OnClick с помощью PhysicalPressEventRouter кнопки. Например, можно установить OnClick , чтобы срабатывать при первом нажатии кнопки, а не при нажатии и освобождении, настроив параметр "взаимодействовать" при нажатии кнопки " событие при нажатии".

How to use events

Чтобы воспользоваться конкретными сведениями о состоянии ввода, можно использовать нажатые кнопки события: начать, сенсорный элемент, нажата кнопка, кнопка запущена. Однако эти события не будут срабатывать в ответ на вход воздуха, руки или глаз. Чтобы обеспечить поддержку практических и дальнего взаимодействия, рекомендуется использовать интерактивное событие OnClick .

How to use Pressable Buttons

Состояния взаимодействия

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

в HoloLens 2 кнопки в стиле оболочки существует множество визуальных подсказок и аффорданцес для повышения достоверности пользователя при взаимодействии.

ProximityLight Выделение фокуса Сжатие контейнера Импульс на триггере
ProximityLight Выделение фокуса Сжатие контейнера Импульс на триггере

Ненавязчивый импульс активируется нажатой кнопкой, которая ищет проксимитилигхт (s) , которые находятся на текущем взаимодействующем указателе. Если обнаружены индикаторы близости, ProximityLight.Pulse вызывается метод, который автоматически анимируется параметры шейдера для вывода импульса.

Свойства инспектора

Структура кнопки

Конфликт Box Box Collider для передней панели кнопки.

Нажатая кнопка Логика движения кнопки с помощью действия руки.

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

Взаимодействие Взаимодействие обрабатывает различные типы состояний взаимодействия и событий. HoloLens взгляд, жест, речевой ввод и иммерсивное устройство ввода в головной гарнитуре непосредственно обрабатываются этим сценарием.

Источник звука Источник звука Unity для аудиоклипов с отзывами.

Неаринтерактионтаучабле. CS требуется для того, чтобы любой объект с сенсорным вводом был управляемым.

Макет prefab

Объект буттонконтент содержит переднюю форму, текстовую метку и значок. Фронтплате реагирует на близость индекса с помощью шейдера Button_Box . В нем показаны свечение границ, световой эффект и импульсное воздействие на касание. Текстовая метка создается с помощью Текстмеш Pro. Видимость сиитсайитлабел контролируется темой взаимодействия.

Макет кнопки

Изменение значка и текста

Кнопки МРТК используют ButtonConfigHelper компонент для изменения значка кнопки, текста и метки. (Обратите внимание, что некоторые поля могут отсутствовать, если элементы не представлены на выбранной кнопке.)

Вспомогательная функция настройки кнопки

Создание и изменение наборов значков

Набор значков — это общий набор ресурсов значков, используемых ButtonConfigHelper компонентом. Поддерживаются три стиля значков.

  • Четыре значка визуализируются с помощью MeshRenderer . Это стиль значка по умолчанию.
  • Значки спрайтов подготавливаются к просмотру с помощью SpriteRenderer . Это полезно, если вы предпочитаете импортировать значки в виде листа спрайта или хотите предоставить доступ к ресурсам значков с компонентами пользовательского интерфейса Unity. чтобы использовать этот стиль, необходимо установить пакет редактора спрайтов (Windows-> диспетчер пакетов-> 2d sprite) .
  • Значки char подготавливаются к просмотру с помощью TextMeshPro компонента. Это полезно, если вы предпочитаете использовать шрифт значка. чтобы использовать шрифт значка HoloLens, потребуется создать TextMeshPro ресурс шрифта.

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

новый набор значков кнопок можно создать с помощью меню актив: создать > смешанной реальности набор средств > набор значков. Чтобы добавить четыре значка и значки спрайтов, просто перетащите их в соответствующие массивы. Чтобы добавить значки char, необходимо сначала создать и назначить ресурс-контейнер шрифта.

В МРТК 2,4 и более поздних версиях мы рекомендуем перемещать текстуры пользовательских значков в виде значков. Чтобы обновить ресурсы на всех кнопках в проекте до нового рекомендуемого формата, используйте Буттонконфигхелпермигратионхандлер. (набор средств, > служебные программы — > окно миграции — > выбор обработчика миграции — > Microsoft. микседреалити. набор средств. Utilities. Буттонконфигхелпермигратионхандлер)

Импорт пакета Microsoft. Микседреалититулкит. Unity. Tools, необходимого для обновления кнопок.

Диалоговое окно обновления

Если значок не найден в наборе значков по умолчанию во время миграции, в Микседреалититулкит. Generated/Кустомиконсетс будет создан пользовательский набор значков. В диалоговом окне будет указано, что выполнено.

Уведомление о настраиваемом значке

создание ресурса шрифта значка HoloLens

Сначала импортируйте шрифт значка в Unity. на Windows компьютерах можно найти шрифт HoloLens по умолчанию в Windows/Fonts/holomdl2.ttf. Скопируйте и вставьте этот файл в папку Assets.

Затем откройте средство создания ресурса шрифта Текстмешпро с помощью окна > текстмешпро > "создатель ресурса шрифта". ниже приведены рекомендуемые параметры для создания HoloLensного шрифта atlas. Чтобы включить все значки, вставьте следующий диапазон Юникода в поле последовательности символов :

E700-E702,E706,E70D-E70E,E710-E714,E718,E71A,E71D-E71E,E720,E722,E728,E72A-E72E,E736,E738,E73F,E74A-E74B,E74D,E74F-E752,E760-E761,E765,E767-E769,E76B-E76C,E770,E772,E774,E777,E779-E77B,E782-E783,E785-E786,E799,E7A9-E7AB,E7AF-E7B1,E7B4,E7C8,E7E8-E7E9,E7FC,E80F,E821,E83F,E850-E859,E872-E874,E894-E895,E8A7,E8B2,E8B7,E8B9,E8D5,E8EC,E8FB,E909,E91B,E92C,E942,E95B,E992-E995,E9E9-E9EA,EA37,EA40,EA4A,EA55,EA96,EB51-EB52,EB65,EB9D-EBB5,EBCB-EBCC,EBCF-EBD3,EC03,EC19,EC3F,EC7A,EC8E-EC98,ECA2,ECD8-ECDA,ECE0,ECE7-ECEB,ED17,EE93,EFA9,F114-F120,F132,F181,F183-F186

Создание кнопки 1

После создания ресурса шрифта сохраните его в свой проект и присвойте ему поле шрифта со значком char в наборе значков. Теперь раскрывающийся список Доступные значки будет заполнен. Чтобы сделать значок доступным для кнопки, щелкните его. Он будет добавлен в раскрывающийся список Выбранные значки и теперь будет отображаться в, ButtonConfigHelper. при необходимости можно дать значку тег. Это позволяет задать значок во время выполнения.

Создание кнопки 3

Создание кнопки 2

public void SetButtonToAdjust()
{
    ButtonConfigHelper buttonConfigHelper = gameObject.GetComponent<ButtonConfigHelper>();
    buttonConfigHelper.SetCharIconByName("AppBarAdjust");
}

Чтобы использовать набор значков, нажмите кнопку, разверните раскрывающийся список значков в ButtonConfigHelper и назначьте его полю набора значков .

Набор значков кнопок

Изменение размера кнопки

размер кнопки в стиле оболочки HoloLens 2 — 32x32mm. Чтобы настроить измерение, измените размер этих объектов на кнопке Prefab:

  1. фронтплате
  2. Четыре непечатных панели
  3. Box конфликтует в корне

Затем нажмите кнопку исправить границы в скрипте неаринтерактионтаучабле, который находится в корне кнопки.

Изменение размера  кнопки фронтплате Настройка размера 1

Обновление размера  плоской кнопки Настройка 2

Обновление размера кнопки "рамка",  настройки размера 3

Нажмите кнопку "исправить границы"  Настройка размера 4

<a name="voice-command-see-it-say-it">Голосовая команда ("см.,", ")"

Обработчик речевого ввода Взаимодействующий скрипт в нажатой кнопке уже реализует IMixedRealitySpeechHandler . Здесь можно задать ключевое слово Voice Command.

Buttons Speech

Профиль ввода речи Кроме того, необходимо зарегистрировать ключевое слово голосовой команды в профиле глобальных речевых команд.

Button speech 2

См. раздел-IT, метка нажатая кнопка prefab имеет заполнитель текстмеш Pro метку в объекте сиитсайитлабел . Эту метку можно использовать для передачи ключевому слову команды Voice для кнопки пользователю.

Button Speech 3

Как сделать кнопку с нуля

Примеры этих кнопок можно найти в сцене прессаблебуттонексампле .

Pressable button cube 0

1. Создание нажатой кнопки с кубом (только для взаимодействия)

  1. Создание куба Unity (GameObject > трехмерный объект > Кубу)
  2. Добавить PressableButton.cs Скрипт
  3. Добавить NearInteractionTouchable.cs Скрипт

На PressableButton панели инспектора укажите объект куба для визуальных элементов кнопки перемещения.

pressable button cube 3

При выборе Куба в объекте отображается несколько цветных слоев. это визуализирует значения расстояния под нажатием Параметры. С помощью дескрипторов можно настроить время запуска (перемещения объекта) и время активации события.

Pressable Buton cube 1 Pressable button cube 2

При нажатии кнопки будут перемещены и созданы соответствующие события, представленные в PressableButton.cs сценарии, такие как таучбегин (), таученд (), буттонпрессед (), буттонрелеасед ().

Pressable button cube run 1

Устранение неполадок

Если кнопка выполняется двойным щелчком, убедитесь, что свойство Принудительная отправка на передний план активна, а плоскость Начало push-уведомлений помещается перед ближайшей сенсорной плоскостью. Сенсорная плоскость близкого взаимодействия обозначается синей плоскостью, помещенной перед началом координат белой стрелки в приведенном ниже GIF-файле:

Компонент скрипта для нажатой кнопки с выделенным свойством принудительная передача

Анимированный пример перемещения начала push-уведомления перед близкой плоскостью с сенсорным взаимодействием

2. Добавление визуальной обратной связи к кнопке "базовый куб"

Стандартный шейдер МРТК предоставляет различные функции, упрощающие Добавление визуальной обратной связи. Создайте материал и выберите шейдер Mixed Reality Toolkit/Standard . Также можно использовать или дублировать один из существующих материалов в /SDK/StandardAssets/Materials/ , использующий стандартный ШЕЙДЕР мртк.

Pressable button cube 4

проверьте Hover Light и Proximity Light в разделе параметры Fluent. Это обеспечивает визуальную обратную связь как с ближайшими, так и с большим указателем (светлое изображение).

pressable button cube 5 pressable button cube run 2

3. Добавление обратной связи для кнопки "базовый куб"

Так как PressableButton.cs скрипт предоставляет такие события, как таучбегин (), таученд (), буттонпрессед (), буттонрелеасед (), мы легко можем назначить звуковые отзывы. Просто добавьте Unity Audio Source в объект Cube, а затем назначьте аудиоклипы, выбрав аудиосаурце. плайонешот (). В папке можно использовать MRTK_Select_Main и MRTK_Select_Secondary аудиоклипы /SDK/StandardAssets/Audio/ .

pressable button cube 7 Pressable Button Cube 6

4. Добавление визуальных состояний и обработку событий дальнего взаимодействия

Взаимодействие — это скрипт, который упрощает создание визуального состояния для различных типов входных данных. Он также обрабатывает события дальнего взаимодействия. Добавьте Interactable.cs объект куба и перетащите его в целевое поле в разделе Профили. Затем создайте новую тему с типом скалеоффсетколорсеме. В этой теме можно указать цвет объекта для конкретных состояний взаимодействия, например фокус и нажатое. Кроме того, можно также управлять масштабом и смещением. Установите флажок замедление и задайте длительность, чтобы сделать визуальный переход гладким.

Выбор темы профиля

Вы увидите, что объект отвечает на оба (руки или указатель) и почти (руки) взаимодействия.

Pressable Button Cube Run 3 Pressable Button Cube Run 4

Примеры настраиваемых кнопок

В сцене хандинтерактионексамплеознакомьтесь с примерами пианино и круглыми кнопками, которые используют PressableButton .

Pressable Custom1 Pressable Custom2

Каждому ключу пианино PressableButton NearInteractionTouchable присваивается и назначается сценарий. Важно проверить правильность локального направления вперед NearInteractionTouchable . Он представлен белой стрелкой в редакторе. Убедитесь, что стрелка направлена далеко от лицевой стороны кнопки:

Pressable Custom3

См. также раздел