Начало работы с 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.

  1. Сначала скачайте средство Смешанная реальность feature tool из Центра загрузки Майкрософт.

  2. Запустите скачанный исполняемый файл Смешанная реальность 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.

  1. Запустите средство Смешанная реальность Feature Tool (установленное выше). Откроется начальная страница средства Смешанная реальность компонентов для Unity с параметрами для настройки параметров и просмотра документации:

    Кнопка

  2. Нажмите кнопку шестеренки. Откроется панель Параметры .

  3. Перейдите на вкладку Компонент и убедитесь, что установлен флажок Показать предварительные версии выпусков :

    Вкладка

  4. Нажмите кнопку ОК , чтобы вернуться на начальную страницу.

  5. Нажмите кнопку Пуск , чтобы начать обнаружение пакетов компонентов.

  6. Наведите Смешанная реальность Feature Tool на проект Unity. Для этого нажмите кнопку Обзор папки проекта (...) справа от поля Путь к проекту :

    Выберите проект Unity в средстве Смешанная реальность feature tool

  7. В диалоговом окне выбора файла выберите папку проекта Unity и нажмите кнопку Открыть .

  8. В диалоговом окне Выбор проекта нажмите кнопку Обнаружение компонентов .

  9. На странице Обнаружение компонентов разверните раздел Другие функции и установите флажок Microsoft Смешанная реальность WebView:

    Область

    Это помечает подключаемый модуль WebView для Unity для установки. По умолчанию в раскрывающемся списке Версия выбрана последняя версия подключаемого модуля.

  10. Нажмите кнопку Получить компоненты . При этом скачиваются необходимые пакеты.

  11. После скачивания пакетов нажмите кнопку Импорт :

    Область Импорт компонентов в средстве Смешанная реальность компонентов

  12. На странице Проверка и утверждение проверьте изменения, которые будут внесены в файл проекта manifest.json , и просмотрите список файлов (например .tgz , пакетов), которые будут скопированы в проект:

    Панель

  13. Нажмите кнопку Утвердить , чтобы завершить изменения.

  14. В проекте Unity в папке Assets проекта проверьте заготовку WebView.

Подключаемый модуль Microsoft Смешанная реальность WebView для Unity теперь установлен и импортирован. Перейдите к следующему шагу ниже.

Дополнительные сведения см. в разделе Welcome to the Смешанная реальность Feature Tool.

Шаг 5. Настройка заготовки WebView в сцене Unity

Теперь, когда подключаемый модуль WebView для Unity установлен и импортирован, настройте заготовку WebView в сцене Unity следующим образом:

  1. В редакторе Unity перейдите в окно Проект, а затем найдите заготовку WebView, выбрав Пакеты>Microsoft Смешанная реальность WebView (предварительная версия)>Prefabсреды выполнения>.

  2. Перетащите заготовку WebView в сцену.

  3. Выбрав заготовку WebView в окне Иерархия , переместите его в подходящее начальное место в сцене (например, под MixedRealitySceneContent узлом), убедившись, что он находится в представлении камеры по умолчанию.

  4. В окне Инспектор можно изменить начальный URL-адрес, загруженный с помощью заготовки WebView. Для этого найдите текстовое поле Текущий URL-адрес и введите нужный URL-адрес. По умолчанию заготовка загружает https://www.microsoft.com:

    Поле ввода текущего URL-адреса для заготовки WebView в инспекторе Unity

Шаг 6. Тестирование проекта

Теперь, когда вы добавили подключаемый модуль WebView в сцену, пришло время протестировать проект.

  1. Чтобы протестировать проект непосредственно в редакторе Unity, нажмите кнопку Воспроизвести :

    Запуск режима воспроизведения редактора

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

Затем перейдите к следующим шагам ниже.

Шаг 7. Расширение функциональных возможностей WebView2

Хотя заготовка предоставляет только одно свойство, скрипт предоставляет WebView дополнительные функции. Давайте рассмотрим предоставление некоторых из этих функций в нашем проекте. Сначала проверьте WebView скрипт, чтобы получить представление о доступных.

Совет

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

Теперь, когда вы ознакомились с WebView кодом, давайте расширим функциональные возможности примера. В оставшейся части этого шага мы добавим некоторые основные функции, чтобы у пользователя была кнопка "Назад ", кнопка "Перейти " и текстовое поле для перехода по пользовательскому URL-адресу.

Добавление поля ввода и кнопок

  1. Измените иерархию сцен следующим образом:

    1. В разделе MixedRealitySceneContentдобавьте новый компонент ввода (щелкните правой кнопкой мыши > поле ввода пользовательского интерфейса>— TextMeshPro). При этом автоматически добавляется родительский Canvas элемент для компонента.
    2. В новом Canvasдобавьте два новых Button компонента (щелкните правой кнопкой мыши кнопку >пользовательского интерфейса>— TextMeshPro).
    3. Переупоряйте WebView порядок компонента, чтобы сделать его дочерним элементом Canvas компонента:

    Обновлена иерархия сцен с новыми компонентами в Unity

  2. Обновите свойства Canvas, выбрав Холст в области Иерархия , а затем внесите следующие изменения в область Инспектор :

    1. Измените ширину и высоту на 600, 400 соответственно.
    2. Измените масштаб для X, Y и Z на 0,001, 0,001, 0,001:

    Обновлены свойства Canvas в инспекторе Unity

  3. Обновите свойства поля ввода, выбрав его на панели Иерархия , а затем внесите следующие изменения в область Инспектор :

    1. Измените имя на AddressField (TMP)
    2. Измените pos X, Pos Y, Pos Z на -2, 178, -5 соответственно.
    3. Измените ширину и высоту на 390, 30 соответственно:

    Обновлены свойства поля ввода в инспекторе Unity

  4. Обновите свойства первой кнопки, выбрав ее в области Иерархия , а затем внесите следующие изменения в область Инспектор :

    1. Измените имя на "Назад, кнопка"
    2. Измените pos X, Pos Y, Pos Z на -248, 178, -5 соответственно.
    3. Измените ширину и высоту на 75, 30 соответственно:

    Обновлены свойства кнопки

  5. Обновите свойства второй кнопки, выбрав ее в области Иерархия , а затем внесите следующие изменения в область Инспектор :

    1. Измените имя на "Go Button"
    2. Измените pos X, Pos Y, Pos Z на 242, 178, -5 соответственно.
    3. Измените ширину и высоту на 75, 30 соответственно:

    Обновлены свойства кнопки Go в инспекторе Unity

  6. Обновите свойства WebView, выбрав его в области Иерархия , а затем внесите следующие изменения в область Инспектор :

    1. Измените положение>X, Y, Z на 0, -16, -5 соответственно.
    2. Измените масштаб>X, Y, Z на 570, 340, 1 соответственно:

    Обновлены свойства WebView в инспекторе Unity

  7. Добавьте фоновое изображение на холст:

    1. Выберите Холст в области Иерархия .
    2. Нажмите кнопку Добавить компонент в нижней части области Инспектор .
    3. Введите Image и выберите верхний результат в списке.
    4. Щелкните значок Цвет для изображения и выберите цвет фона. В нашем примере мы выбрали серый цвет. (Это просто показывает некоторую контрастность между различными элементами управления на холсте.)

    Установка цвета фона холста в инспекторе Unity

  8. В области Иерархия в разделе Назад кнопка выберите Текст (TMP). Затем в области Инспектор измените значение текстового ввода на Назад:

    Измените текст кнопки на

  9. Повторите описанный выше процесс для кнопки Go, заменив текстом Go .

    Теперь у вас должна быть сцена, которая выглядит примерно так:

    Текущая сцена в представлении сцены Unity

Добавление кода для подключения кнопок

Теперь, когда мы разработали наш пользовательский интерфейс, мы создадим код для подключения кнопок. Для этого мы создадим новый скрипт, производный от Microsoft.MixedReality.WebView.

  1. В окне Инспектора для WebView щелкните Добавить компонент, выберите Создать скрипт, введите WebViewBrowser и нажмите кнопку Создать и добавить. Новый компонент будет добавлен в окно Инспектор .

  2. В окне Инспектор дважды щелкните WebViewBrowser скрипт, чтобы изменить его.

  3. Замените содержимое этого файла следующим кодом:

    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;
       }
    }
    
  4. Подключите пользовательский интерфейс GameObjects к коду WebViewBrowser , который мы только что написали:

    1. Выберите WebViewBrowser.
    2. Перетащите кнопку "Назад" из области Иерархия в поле переменной "Кнопка назад" для браузера WebView в инспекторе.
    3. Перетащите кнопку Go из области Иерархия в поле переменной Go Button для браузера WebView в инспекторе:

    Заготовка браузера WebView с назначенными переменными в инспекторе Unity

  5. Теперь вы можете протестировать сцену в редакторе Unity. При подключении всех элементов в сцене вы сможете убедиться, что все работает должным образом. Попробуйте протестировать сцену, введя новый URL-адрес в AddressField текстовое поле (должен быть полным URL-адресом, включая протокол), а затем нажмите кнопку Go . Убедитесь, что кнопка Назад также работает.

    Иногда может быть полезно выполнить отладку приложения, работающего в HoloLens, и действия для этого немного отличаются от стандартной отладки в Visual Studio. Дополнительные сведения о настройке и подключении к приложению, работающему в HoloLens или в редакторе Unity, см. в статье Управляемая отладка с помощью 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 мы коснулись некоторых методов навигации. В этом разделе мы рассмотрим то, что мы узнали.

См. также:

Интерфейс 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 для приложений смешанной реальности.

Независимо от системы ввода, используемой в приложении 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 примере намеренно не реализован.

См. также