Начало работы с WebView2 в приложениях HoloLens 2 Unity (предварительная версия)
Это руководство предназначено для разработчиков, использующих WebView2 в иммерсивном HoloLens 2 приложениях Unity.
WebView2 на HoloLens 2 и подключаемый модуль WebView для Unity находятся в предварительной версии и могут быть изменены до выпуска общедоступной версии.
WebView2 поддерживается только на HoloLens 2 устройствах с обновлением Windows 11. Дополнительные сведения см. в разделе Обновление HoloLens 2.
Сведения о двухD-приложениях с поддержкой WebView2 на HoloLens 2 см. в статье Начало работы с WebView2 в приложениях WinUI 2 (UWP).
В этом руководстве вы:
- Настройте средства разработки для создания HoloLens 2 приложений Unity, которые используют WebView2 для отображения веб-содержимого.
- Установите набор средств Смешанная реальность с помощью средства Смешанная реальность Feature Tool.
- Создайте первоначальный проект Unity для разработки HoloLens 2.
- Добавьте подключаемый модуль Microsoft Смешанная реальность WebView для Unity с помощью средства Смешанная реальность Feature Tool.
- Настройте заготовку WebView, которая отображает содержимое веб-страницы в приложении HoloLens 2.
- Узнайте об основных понятиях и взаимодействиях WebView2 в Unity.
Завершенный проект
Готовая версия этого проекта начало работы доступна в репозитории WebView2Samples. Готовый проект (из репозитория или из приведенных ниже действий) можно использовать в качестве базового плана для добавления дополнительных функций WebView2 и других функций в приложение HoloLens 2 Unity.
Полная версия этого учебного проекта доступна в репозитории WebView2Samples :
- Имя примера: HoloLens2_GettingStarted
- Каталог репозитория: HoloLens2_GettingStarted
- Папка проекта Unity: HoloLens2GetStartedApp
Следуйте приведенным ниже основным разделам Шаг.
Сведения о HoloLens 2, Unity, средстве Смешанная реальность компонентов, наборе средстве Смешанная реальность и подключаемом модуле WebView
Объединяя HoloLens 2, Unity, Смешанная реальность Toolkit и подключаемый модуль WebView для Unity, можно создать иммерсивный интерфейс смешанной реальности, который легко интегрирует веб-содержимое.
HoloLens 2
HoloLens 2 — это новаторский, неуправляемый голографический прибор, предлагающий иммерсивный интерфейс смешанной реальности. HoloLens 2 легко накладывает цифровую информацию на реальный мир, отрисовывая голограммы высокой четкости, которые остаются на месте и естественным образом реагируют на взаимодействие.
Вы можете использовать игровой движок Unity и Visual Studio для создания проекта HoloLens 2.
Единство
Unity, универсальный игровой движок, является популярным выбором для создания трехмерных приложений, включая возможности смешанной реальности для HoloLens 2 устройств, благодаря его обширным функциям и надежным возможностям для дополненной реальности (AR), виртуальной реальности (VR) и смешанной реальности (MR).
Средство Смешанная реальность компонентов (MRFT)
Средство Смешанная реальность функций (MRFT) — это новый способ обнаружения, обновления и добавления пакетов функций смешанной реальности в проекты Unity. Вы можете выполнять поиск пакетов по имени или категории, просматривать их зависимости и даже просматривать предлагаемые изменения в файле манифеста проектов перед импортом. Файл манифеста — это JSON-файл, определяющий все пакеты проекта. После проверки включения пакетов средство Смешанная реальность Feature автоматически скачивает их в выбранный проект Unity. В этом руководстве используется MRFT для установки набора средств Смешанная реальность и подключаемого модуля Microsoft Смешанная реальность WebView для Unity.
Набор средств Смешанная реальность (MRTK)
Набор средств Смешанная реальность (MRTK) — это проект с открытым кодом, управляемый корпорацией Майкрософт, который ускоряет разработку приложений смешанной реальности в Unity, предоставляя необходимые компоненты и функции для разработки возможностей смешанной реальности. MRTK предоставляет коллекцию сценариев, компонентов и заготовок, специально предназначенных для создания производительного и интуитивно понятного интерфейса смешанной реальности на HoloLens 2 устройствах.
Подключаемый модуль Microsoft Смешанная реальность WebView для Unity
Подключаемый модуль Microsoft Смешанная реальность WebView для Unity позволяет интегрировать функции WebView2 в приложение HoloLens 2. Этот подключаемый модуль WebView для Unity упрощает интеграцию функций WebView2 в приложение HoloLens 2 путем упаковки элемента управления WebView2, автоматической обработки отрисовки и автоматического направления входных данных в элемент управления WebView2.
Этот подключаемый модуль также управляет взаимодействием между Unity и WebView2, обеспечивая обмен данными между JavaScript и Unity через сообщения и события.
В Unity подключаемый модуль Microsoft Смешанная реальность WebView для Unity можно установить с помощью средства Смешанная реальность Feature Tool.
Шаг 1. Установка Visual Studio
В этом руководстве предполагается, что у вас установлен Unity 2021.3 LTS или более поздней версии и Visual Studio 2019 версии 16.9 или более поздней. Visual Studio 2017 не поддерживается. На этом шаге мы начнем с настройки среды Visual Studio для разработки HoloLens 2, следуйте инструкциям в руководстве по установке средств Смешанная реальность. В этой статье описывается установка и настройка необходимых средств, включая Visual Studio и рабочую нагрузку разработки универсальная платформа Windows.
Также настройте среду разработки для WebView2, выполнив действия, описанные в разделе Настройка среды разработки для WebView2.
Завершив настройку, вернитесь на эту страницу и выполните следующие действия, чтобы установить Unity.
Шаг 2. Установка Unity для разработки HoloLens 2
Прежде чем приступить к разработке приложения HoloLens 2 с помощью WebView2, необходимо установить Unity. Выполните действия, описанные в разделе Выбор версии Unity и подключаемого модуля XR , чтобы завершить установку набора инструментов, необходимого для создания приложений смешанной реальности.
Шаг 3. Настройка проекта Unity для разработки Смешанная реальность
После установки инструментов вы можете создать и настроить проект. Самый простой способ приступить к разработке HoloLens 2 — использовать набор средств Смешанная реальность в проекте.
Средство Смешанная реальность feature tool упрощает процесс обнаружения, установки и управления функциями смешанной реальности, включая набор средств Смешанная реальность и пакеты для проекта Unity. Дополнительные рекомендации по установке средства Смешанная реальность компонентов см. в разделе Добро пожаловать в Смешанная реальность Feature Tool.
Сначала скачайте средство Смешанная реальность feature tool из Центра загрузки Майкрософт.
Запустите скачанный исполняемый файл Смешанная реальность Feature Tool и следуйте инструкциям, чтобы установить набор средств Смешанная реальность и все дополнительные необходимые пакеты для разработки HoloLens 2.
Средство Смешанная реальность компонентов позволяет выбрать и установить соответствующие версии набора средств Смешанная реальность, а также другие функции смешанной реальности непосредственно в проекте Unity.
После использования средства Смешанная реальность Feature Tool для установки набора средств Смешанная реальность ресурсы и заготовки набора будут отображаться в проекте Unity. Набор средств Смешанная реальность поможет вам настроить подключаемый модуль Open XR для проекта.
Подробное пошаговое руководство по настройке проекта Unity см. в статье Настройка нового проекта OpenXR с помощью MRTK.
Шаг 4. Установка подключаемого модуля WebView для Unity с помощью средства Смешанная реальность компонентов
На этом шаге, как описано выше, вы будете использовать средство Смешанная реальность Feature Tool для установки подключаемого модуля Microsoft Смешанная реальность WebView для Unity. При этом будет установлена определенная версия пакета NuGet WebView2, совместимая с HoloLens 2.
Запустите средство Смешанная реальность Feature Tool (установленное выше). Откроется начальная страница средства Смешанная реальность компонентов для Unity с параметрами для настройки параметров и просмотра документации:
Нажмите кнопку шестеренки. Откроется панель Параметры .
Перейдите на вкладку Компонент и убедитесь, что установлен флажок Показать предварительные версии выпусков :
Нажмите кнопку ОК , чтобы вернуться на начальную страницу.
Нажмите кнопку Пуск , чтобы начать обнаружение пакетов компонентов.
Наведите Смешанная реальность Feature Tool на проект Unity. Для этого нажмите кнопку Обзор папки проекта (...) справа от поля Путь к проекту :
В диалоговом окне выбора файла выберите папку проекта Unity и нажмите кнопку Открыть .
В диалоговом окне Выбор проекта нажмите кнопку Обнаружение компонентов .
На странице Обнаружение компонентов разверните раздел Другие функции и установите флажок Microsoft Смешанная реальность WebView:
Это помечает подключаемый модуль WebView для Unity для установки. По умолчанию в раскрывающемся списке Версия выбрана последняя версия подключаемого модуля.
Нажмите кнопку Получить компоненты . При этом скачиваются необходимые пакеты.
После скачивания пакетов нажмите кнопку Импорт :
На странице Проверка и утверждение проверьте изменения, которые будут внесены в файл проекта
manifest.json
, и просмотрите список файлов (например.tgz
, пакетов), которые будут скопированы в проект:Нажмите кнопку Утвердить , чтобы завершить изменения.
В проекте Unity в папке Assets проекта проверьте заготовку WebView.
Подключаемый модуль Microsoft Смешанная реальность WebView для Unity теперь установлен и импортирован. Перейдите к следующему шагу ниже.
Дополнительные сведения см. в разделе Welcome to the Смешанная реальность Feature Tool.
Шаг 5. Настройка заготовки WebView в сцене Unity
Теперь, когда подключаемый модуль WebView для Unity установлен и импортирован, настройте заготовку WebView в сцене Unity следующим образом:
В редакторе Unity перейдите в окно Проект, а затем найдите заготовку WebView, выбрав Пакеты>Microsoft Смешанная реальность WebView (предварительная версия)>Prefabсреды выполнения>.
Перетащите заготовку WebView в сцену.
Выбрав заготовку WebView в окне Иерархия , переместите его в подходящее начальное место в сцене (например, под
MixedRealitySceneContent
узлом), убедившись, что он находится в представлении камеры по умолчанию.В окне Инспектор можно изменить начальный URL-адрес, загруженный с помощью заготовки WebView. Для этого найдите текстовое поле Текущий URL-адрес и введите нужный URL-адрес. По умолчанию заготовка загружает
https://www.microsoft.com
:
Шаг 6. Тестирование проекта
Теперь, когда вы добавили подключаемый модуль WebView в сцену, пришло время протестировать проект.
Чтобы протестировать проект непосредственно в редакторе Unity, нажмите кнопку Воспроизвести :
Чтобы протестировать проект на фактическом устройстве, выполните действия, описанные в разделе Сборка и развертывание в HoloLens.
Затем перейдите к следующим шагам ниже.
Шаг 7. Расширение функциональных возможностей WebView2
Хотя заготовка предоставляет только одно свойство, скрипт предоставляет WebView
дополнительные функции. Давайте рассмотрим предоставление некоторых из этих функций в нашем проекте. Сначала проверьте WebView
скрипт, чтобы получить представление о доступных.
Совет
Чтобы просмотреть содержимое скрипта в редакторе кода по умолчанию, дважды щелкните имя скрипта в окне Инспектор .
Теперь, когда вы ознакомились с WebView
кодом, давайте расширим функциональные возможности примера. В оставшейся части этого шага мы добавим некоторые основные функции, чтобы у пользователя была кнопка "Назад ", кнопка "Перейти " и текстовое поле для перехода по пользовательскому URL-адресу.
Добавление поля ввода и кнопок
Измените иерархию сцен следующим образом:
- В разделе
MixedRealitySceneContent
добавьте новый компонент ввода (щелкните правой кнопкой мыши > поле ввода пользовательского интерфейса>— TextMeshPro). При этом автоматически добавляется родительскийCanvas
элемент для компонента. - В новом
Canvas
добавьте два новыхButton
компонента (щелкните правой кнопкой мыши кнопку >пользовательского интерфейса>— TextMeshPro). - Переупоряйте
WebView
порядок компонента, чтобы сделать его дочерним элементомCanvas
компонента:
- В разделе
Обновите свойства Canvas, выбрав Холст в области Иерархия , а затем внесите следующие изменения в область Инспектор :
- Измените ширину и высоту на 600, 400 соответственно.
- Измените масштаб для X, Y и Z на 0,001, 0,001, 0,001:
Обновите свойства поля ввода, выбрав его на панели Иерархия , а затем внесите следующие изменения в область Инспектор :
- Измените имя на AddressField (TMP)
- Измените pos X, Pos Y, Pos Z на -2, 178, -5 соответственно.
- Измените ширину и высоту на 390, 30 соответственно:
Обновите свойства первой кнопки, выбрав ее в области Иерархия , а затем внесите следующие изменения в область Инспектор :
- Измените имя на "Назад, кнопка"
- Измените pos X, Pos Y, Pos Z на -248, 178, -5 соответственно.
- Измените ширину и высоту на 75, 30 соответственно:
Обновите свойства второй кнопки, выбрав ее в области Иерархия , а затем внесите следующие изменения в область Инспектор :
- Измените имя на "Go Button"
- Измените pos X, Pos Y, Pos Z на 242, 178, -5 соответственно.
- Измените ширину и высоту на 75, 30 соответственно:
Обновите свойства WebView, выбрав его в области Иерархия , а затем внесите следующие изменения в область Инспектор :
- Измените положение>X, Y, Z на 0, -16, -5 соответственно.
- Измените масштаб>X, Y, Z на 570, 340, 1 соответственно:
Добавьте фоновое изображение на холст:
- Выберите Холст в области Иерархия .
- Нажмите кнопку Добавить компонент в нижней части области Инспектор .
- Введите Image и выберите верхний результат в списке.
- Щелкните значок Цвет для изображения и выберите цвет фона. В нашем примере мы выбрали серый цвет. (Это просто показывает некоторую контрастность между различными элементами управления на холсте.)
В области Иерархия в разделе Назад кнопка выберите Текст (TMP). Затем в области Инспектор измените значение текстового ввода на Назад:
Повторите описанный выше процесс для кнопки Go, заменив текстом Go .
Теперь у вас должна быть сцена, которая выглядит примерно так:
Добавление кода для подключения кнопок
Теперь, когда мы разработали наш пользовательский интерфейс, мы создадим код для подключения кнопок. Для этого мы создадим новый скрипт, производный от Microsoft.MixedReality.WebView
.
В окне Инспектора для WebView щелкните Добавить компонент, выберите Создать скрипт, введите WebViewBrowser и нажмите кнопку Создать и добавить. Новый компонент будет добавлен в окно Инспектор .
В окне Инспектор дважды щелкните
WebViewBrowser
скрипт, чтобы изменить его.Замените содержимое этого файла следующим кодом:
using Microsoft.MixedReality.WebView; using UnityEngine.UI; using UnityEngine; using TMPro; using System; public class WebViewBrowser : MonoBehaviour { // Declare UI elements: Back button, Go button, and URL input field public Button BackButton; public Button GoButton; public TMP_InputField URLField; private void Start() { // Get the WebView component attached to the game object var webViewComponent = gameObject.GetComponent<WebView>(); webViewComponent.GetWebViewWhenReady((IWebView webView) => { // If the WebView supports browser history, enable the Back button if (webView is IWithBrowserHistory history) { // Add an event listener for the Back button to navigate back in history BackButton.onClick.AddListener(() => history.GoBack()); // Update the Back button's enabled state based on whether there's any history to go back to history.CanGoBackUpdated += CanGoBack; } // Add an event listener for the Go button to load the URL that was entered in the input field GoButton.onClick.AddListener(() => webView.Load(new Uri(URLField.text))); // Subscribe to the Navigated event to update the URL input field whenever a navigation occurs webView.Navigated += OnNavigated; // Set the initial value of the URL input field to the current URL of the WebView if (webView.Page != null) { URLField.text = webView.Page.AbsoluteUri; } }); } // Update the URL input field with the new path after navigation private void OnNavigated(string path) { URLField.text = path; } // Enable or disable the Back button based on whether there's any history to go back to private void CanGoBack(bool value) { BackButton.enabled = value; } }
Подключите пользовательский интерфейс
GameObjects
к кодуWebViewBrowser
, который мы только что написали:- Выберите WebViewBrowser.
- Перетащите кнопку "Назад" из области Иерархия в поле переменной "Кнопка назад" для браузера WebView в инспекторе.
- Перетащите кнопку Go из области Иерархия в поле переменной Go Button для браузера WebView в инспекторе:
Теперь вы можете протестировать сцену в редакторе Unity. При подключении всех элементов в сцене вы сможете убедиться, что все работает должным образом. Попробуйте протестировать сцену, введя новый URL-адрес в
AddressField
текстовое поле (должен быть полным URL-адресом, включая протокол), а затем нажмите кнопку Go . Убедитесь, что кнопка Назад также работает.Иногда может быть полезно выполнить отладку приложения, работающего в HoloLens, и действия для этого немного отличаются от стандартной отладки в Visual Studio. Дополнительные сведения о настройке и подключении к приложению, работающему в HoloLens или в редакторе Unity, см. в статье Управляемая отладка с помощью Unity.
См. также:
- Справочник по API WebView2
- Справочник по API для подключаемого модуля WebView Смешанная реальность — для HoloLens 2 в подключаемом модуле WebView2 Unity.
Выполните следующие действия ниже.
Шаг 8. Сведения о событиях и взаимодействиях WebView2 в Unity
Подключаемый модуль Microsoft Смешанная реальность WebView для Unity предоставляет события для работы с веб-представлением.
Одним из важных событий является IWithPostMessage.MessageReceived
, которое возникает при отправке сообщения из веб-представления в приложение Unity. Событие MessageReceived
определяется в интерфейсе Microsoft.MixedReality.WebView.IWithPostMessage
.
IWithPostMessage
также определяет PostMessage()
метод , который можно использовать для отправки сообщения из приложения Unity в веб-представление.
Ниже приведен пример использования этих событий и методов для работы с веб-представлением:
using Microsoft.MixedReality.WebView;
public class WebViewExample : MonoBehaviour, IWithPostMessage
{
private void Start()
{
var webViewComponent = gameObject.GetComponent<WebView>();
if (Url != string.Empty)
{
Debug.Log("Loading URL: " + Url);
webViewComponent.Load(new Uri(Url));
}
webViewComponent.GetWebViewWhenReady((IWebView webView) =>
{
// Add event listeners for WebView2 events
((IWithPostMessage)webView).MessageReceived += OnMessageReceived;
});
}
// Handler for WebView2 OnPostMessage event
void OnMessageReceived(string message)
{
Debug.Log("WebView2 message received: " + message);
}
}
Дополнительные рекомендации по WebView2 в HoloLens 2
Ограничения и известные проблемы
При разработке приложения HoloLens 2 Unity с помощью WebView2 следует учитывать некоторые ограничения и известные проблемы:
Всплывающие окна. Всплывающие окна не работают в WebView2 в приложениях Unity на HoloLens 2, но они хорошо работают в 2D-приложениях XAML на устройстве. Избегайте всплывающих окон и используйте альтернативные методы или макеты пользовательского интерфейса, такие как пользовательские всплывающие элементы в WebView с помощью HTML, CSS и JavaScript.
Новые окна: экземпляры WebView2 на HoloLens 2 переходить в одно и то же окно по умолчанию, в отличие от классического. Следуйте этому по умолчанию для улучшения взаимодействия с пользователем. Кроме того, окно Средства разработки не может быть запущено.
Корпоративная проверка подлинности. Автоматический единый Sign-On (SSO) с использованием маркеров уровня ОС в настоящее время не поддерживается в WebView2 на HoloLens 2. Пользователи по-прежнему могут выполнять вход, предоставляя учетные данные, за исключением случаев, когда требуется проверка подлинности на уровне устройства. Хранилище файлов cookie работает должным образом.
Взаимодействие с пользователем. В отличие от собственных HoloLens 2 slates, WebView2 лучше всего взаимодействовать с помощью лучей руки с дальним взаимодействием. Взаимодействие с касанием и прокруткой может не поддерживаться.
Производительность. Сложные веб-сайты с интенсивным использованием JavaScript или расширенной отрисовкой могут повлиять на производительность системы или частоту кадров ведущего приложения. Общие ограничения и рекомендации, связанные с производительностью, см. в статье Общие сведения о производительности для смешанной реальности в документации по смешанной реальности. Также см . раздел Оптимизация производительности ниже.
Оптимизация производительности
Оптимизация производительности WebView2 в приложении Unity HoloLens 2 имеет решающее значение для бесперебойного взаимодействия с пользователем. Ниже приведены некоторые рекомендации.
Ограничение числа экземпляров WebView2. Мы рекомендуем использовать только один экземпляр WebView2 в приложении Unity. Повторно используйте тот же экземпляр или выполните удаление и создайте новый по мере необходимости. Помните, что удаление заготовки WebView из сцены не может привести к уничтожению базового экземпляра WebView2. Чтобы правильно уничтожить его, необходимо вызвать
Destroy()
метод для игрового объекта.Применение общих методов оптимизации Unity. Чтобы оптимизировать производительность WebView2, используйте стандартные подходы к оптимизации Unity, такие как выбор окклюзии или ограничение частоты обновления. Дополнительные сведения см. в статье Рекомендации по производительности для Unity в документации по смешанной реальности.
Профилирование и мониторинг производительности WebView2. Существует несколько способов профилирования производительности приложения HoloLens 2 Unity.
Unity Profiler— встроенное средство в Unity, которое позволяет измерять и оптимизировать производительность приложения на различных платформах, включая HoloLens 2.
Визуальный профилировщик. Функция набора средств Смешанная реальность, которая предоставляет представление производительности приложения в приложении.
PIX: средство настройки и отладки производительности для Windows, которое также можно использовать для профилирования приложений Unity на HoloLens 2.
Навигация
На шаге 7. Расширение функциональных возможностей WebView2 мы коснулись некоторых методов навигации. В этом разделе мы рассмотрим то, что мы узнали.
См. также:
- Справочник по API WebView2
- Справочник по API для подключаемого модуля WebView Смешанная реальность — для HoloLens 2 в подключаемом модуле WebView2 Unity.
Интерфейс IWebView
Интерфейс IWebView
предоставляет несколько методов, событий и свойств, связанных с навигацией по страницам. Main функции, предоставляемые здесь, — это возможность переходить по заданному URL-адресу с помощью Load(Uri url)
:
public interface IWebView
{
// Non-navigation methods are removed for clarity.
event WebView_OnNavigated Navigated;
Uri Page { get; }
void Load(Uri url);
void Reload(bool ignoreCache);
}
Интерфейс IWithBrowserHistory
Интерфейс IWithBrowserHistory
предоставляет несколько методов и событий, связанных с навигацией по страницам. Это в основном позволяет разработчикам перемещаться вперед и назад, как и ожидалось при обычном просмотре веб-страниц:
public interface IWithBrowserHistory : IWebView
{
// Non-navigation methods are removed for clarity.
event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;
event WebView_OnCanGoBackUpdated CanGoBackUpdated;
void GoBack();
void GoForward();
}
SetVirtualHostNameToFolderMapping и SetVirtualHostMapping
Метод CoreWebView2.SetVirtualHostNameToFolderMapping обеспечивает сопоставление между именем виртуального узла и путем к папке, что делает его доступным для веб-сайтов, использующих это имя узла. Этот метод сопоставляет имя локального домена с локальной папкой, чтобы элемент управления WebView2 загружал содержимое из указанной локальной папки при попытке получить доступ к ресурсу для этого домена.
Подключаемый модуль WebView для Unity предоставляет эту функцию через IWithVirtualHost
интерфейс, который имеет один метод : SetVirtualHostMapping(string hostName, string folderPath)
public interface IWithVirtualHost : IWebView
{
void SetVirtualHostMapping(string hostName, string folderPath);
}
Чтобы использовать SetVirtualHostMapping
метод, задайте hostName
любую допустимую строку, соответствующую URL-адресу, например webview2.sample
.
folderPath
может быть абсолютным путем или путем относительно рабочего каталога приложения, например Assets\Html
.
Если у нас есть HTML-файл с именем demo.html
в Assets\Html
разделе , следующий фрагмент кода демонстрирует загрузку demo.html
с помощью подключаемого модуля WebView для Unity:
using Microsoft.MixedReality.WebView;
public class WebViewExample : MonoBehaviour
{
private void Start()
{
var webViewComponent = gameObject.GetComponent<WebView>();
webViewComponent.GetWebViewWhenReady((IWebView webView) =>
{
((IWithVirtualHost)webView).SetVirtualHostMapping("webview2.sample", "Assets\\Html");
// Navigate to our local content.
webViewComponent.Load(new Uri("http://webview2.sample/demo.html"));
});
}
}
Input
Существует несколько способов обработки входных данных в Unity для приложений смешанной реальности.
- Обзор входных данных — MRTK2 — рекомендуется для приложений Смешанная реальность Toolkit 2.8.
- Входные данные — MRTK3 — рекомендуется для приложений Смешанная реальность Toolkit 3.
- Система ввода Unity
Независимо от системы ввода, используемой в приложении Unity, требуется код взаимодействия между различными событиями ввода приложения и подключаемым модулем WebView для Unity. Это означает преобразование этих событий (таких как события указателя) в WebViewMouseEventData
объект, а затем перенаправление этих событий в подключаемый модуль через IWithMouseEvent
интерфейс:
public interface IWithMouseEvents : IWithInputEvents
{
void MouseEvent(WebViewMouseEventData mouseEvent);
}
WebView2 не знает о системе ввода Unity и, вероятно, имеет другую систему координат, чем ваша сцена Unity. В результате при возникновении события указателя вниз его координаты должны быть преобразованы в систему координат элемента управления WebView2. Кроме того, событие указателя вниз необходимо преобразовать в соответствующий WebViewMouseEventData
тип события.
Простой пример:
using Microsoft.MixedReality.WebView;
public class WebViewExample : MonoBehaviour, IPointerDownHandler
{
// WebView setup steps skipped for brevity
public void OnPointerDown(PointerEventData eventData)
{
IWithMouseEvents mouseEventsWebView = webView as IWithMouseEvents;
// Call hypothetical function which converts the event's x, y into the WebView2's coordinate space.
var hitCoord = ConvertToWebViewSpace(eventData.position.x, eventData.position.y);
WebViewMouseEventData mouseEvent = new WebViewMouseEventData
{
X = hitCoord.x,
Y = hitCoord.y,
Type = WebViewMouseEventData.EventType.MouseDown,
Button = WebViewMouseEventData.MouseButton.ButtonLeft,
TertiaryAxisDeviceType = WebViewMouseEventData.TertiaryAxisDevice.PointingDevice
};
// Propagate the event to the WebView plugin.
mouseEventsWebView.MouseEvent(mouseEvent);
}
}
В приведенном выше примере события указателя вниз преобразуются в WebViewMouseEventData
объекты и перенаправляются в подключаемый модуль WebView для Unity. По сути, он преобразуется в событие вниз мыши. Для создания событий щелчка мышью события указателя должны обрабатываться аналогичным образом.
В приведенном выше ConvertToWebViewSpace
примере намеренно не реализован.
См. также
- Начало работы с WebView2 в приложениях WinUI 2 (UWP)
- Справочник по API WebView2
- Справочник по API для подключаемого модуля WebView Смешанная реальность — для HoloLens 2 в подключаемом модуле WebView2 Unity.