Справочник по API для подключаемого модуля WebView Смешанная реальность (предварительная версия)

Подключаемый модуль Microsoft Смешанная реальность WebView для Unity позволяет интегрировать функции WebView2 в приложение HoloLens 2. Этот подключаемый модуль WebView для Unity упрощает интеграцию функций WebView2 в приложение HoloLens 2 путем упаковки элемента управления WebView2, автоматической обработки отрисовки и автоматического направления входных данных в элемент управления WebView2.

Этот подключаемый модуль также управляет взаимодействием между Unity и WebView2, обеспечивая обмен данными между JavaScript и Unity через сообщения и события.

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

WebView2 в HoloLens 2 и подключаемый модуль WebView для Unity находятся в предварительной версии и могут быть изменены до выхода общедоступной версии. Предварительная версия WebView2 доступна в предварительной версии для Microsoft HoloLens. Чтобы получить доступ к этой предварительной версии, вы должны быть зарегистрированы в программе предварительной оценки Windows; См. статью Начало получения сборок для участников программы предварительнойоценки для Microsoft HoloLens.

WebView2 и подключаемый модуль WebView поддерживаются только на HoloLens 2 устройствах с обновлением Windows 11. Дополнительные сведения см. в разделе Обновление HoloLens 2.

Сведения о начале работы с подключаемым модулем WebView для Unity см. в статье Начало работы с WebView2 в приложениях HoloLens 2 Unity.

Интерфейс IWebView

Интерфейс main для подключаемого модуля WebView для Unity.

public interface IWebView
{
    event WebView_OnNavigated Navigated;

    event WebView_OnCloseRequested WindowCloseRequested;

    GameObject GameObject { get; }

    Texture2D Texture { get; }

    int Width { get; set; }

    int Height { get; set; }

    Uri Page { get; }
    
    Task OnceCreated { get; }

    void Resize(int width, int height);

    void Load(Uri url);

    void Dispose();
}

Делегаты IWebView

public delegate void WebView_OnNavigated(string path);

public delegate void WebView_OnCanGoForwardUpdated(bool value);

События IWebView

Событие IWebView.Navigated

Событие, активированное при возникновении события CoreWebView2.SourceChanged с помощью WebView.

Пример
webView.Navigated += OnNavigated;

private void OnNavigated(string uri)
{
    UrlField.text = uri;
}

Событие IWebView.WindowCloseRequested

Событие, активированное при возникновении события CoreWebView2.WindowCloseRequested с помощью WebView.

Пример
webView.WindowCloseRequested += OnWindowCloseRequested;

private void OnWindowCloseRequested()
{
    Destroy(GameObject);
}

Свойства IWebView

Свойство IWebView.GameObject

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

Свойство IWebView.Texture

Объект 2D Unity Texture2D , в который отображается содержимое WebView. Readonly

Свойство IWebView.Width

Ширина текстуры WebView и элемента управления WebView. Обратите внимание, что отрисованными измерениями экземпляра IWebView в сцене Unity управляет GameObject.

Свойство IWebView.Height

Высота текстуры WebView и элемента управления WebView. Обратите внимание, что отрисованными измерениями экземпляра IWebView в сцене Unity управляет GameObject.

Свойство IWebView.Page

Универсальный код ресурса (URI), загруженный или на который осуществляется переход с помощью элемента управления WebView. Readonly

Свойство IWebView.OnceCreated

Задача выполняется, когда элемент управления WebView полностью создан и готов к использованию. Readonly

Пример
webView.OnceCreated.ContinueWith((task) => {

    // Finish setting up plugin.
    webview.Navigated += OnNavigated;
    webview.WindowCloseRequested += OnWindowCloseRequested;

    Load(initialURL);

}, TaskScheduler.FromCurrentSynchronizationContext());

Методы IWebView

Метод IWebView.Resize

Изменяет размер элемента управления WebView2 и Texture. Дополнительные сведения см. в базовом свойстве CoreWebView2Controller.Bounds.

Обратите внимание, что отрисованными измерениями экземпляра IWebView в сцене Unity управляет GameObject.

Пример
Resize(600, 400);

Метод IWebView.Load

Переходит по указанному URI. Дополнительные сведения см. в базовом методе CoreWebView2.Navigate.

Пример
Load(new Uri("https://www.microsoft.com"));

Метод IWebView.Dispose

Очищает ресурсы, такие как память, дескрипторы и обратные вызовы, связанные с экземпляром IWebView .

Вызовите этот метод по завершении работы с конкретным IWebView экземпляром, чтобы обеспечить надлежащее освобождение внутренней памяти. После Dispose вызова IWebView экземпляра следует считать недопустимым.

Пример
void OnDestroy()
{
    webView.Dispose();
}

Интерфейс IWithMouseEvents

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

public interface IWithMouseEvents
{
    void MouseEvent(WebViewMouseEventData mouseEvent);
}

Методы IWithMouseEvents

Метод IWithMouseEvents.MouseEvent

Распространяет WebViewMouseEventData событие в элемент управления WebView. В зависимости от внутренней логики событие приводит к вызову метода CoreWebView2Controller.SendMouseInput или метода CoreWebView2Controller.SendPointerInput.

Пример
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 = PointerEvent.PointerDown,
        Button = PointerButton.Left,
        TertiaryAxisDeviceType = WebViewMouseEventData.TertiaryAxisDevice.PointingDevice
    };

    mouseEventsWebView.MouseEvent(mouseEvent);
}

Интерфейс IWithPostMessage

Интерфейс для взаимодействия между кодом Unity и размещенным кодом WebView.

Дополнительные сведения о взаимодействиях в WebView2 см. в статье Взаимодействие с собственным и веб-кодом.

public interface IWithPostMessage : IWebView
{
    event WebView_OnPostMessage MessageReceived;

    void PostMessage(string message, bool isJSON = false);
}

Делегаты IWithPostMessage

public delegate void WebView_OnPostMessage(string message);

События IWithPostMessage

Метод IWithPostMessage.MessageReceived

Активируется при получении нового сообщения JavaScript от элемента управления WebView. Дополнительные сведения см. в базовом событии CoreWebView2.WebMessageReceived.

Пример
(webView as IWithPostMessage).MessageReceived += OnMessageReceived;

void OnMessageReceived(string message)
{
    Debug.Log(message);
}

Методы IWithPostMessage

Метод IWithPostMessage.PostMessage

Отправляет сообщение JavaScript размещенного содержимого в элементе управления WebView. В зависимости isJSON от параметра это приведет к вызову метода CoreWebView2.PostWebMessageAsString или метода CoreWebView2.PostWebMessageAsJson.

var msg = new MyMessage("updateText", "Updated from Unity!");

(webView as IWithPostMessage).PostMessage(JsonUtility.ToJson(msg), true);

Интерфейс IWithBrowserHistory

Обрабатывает функциональные возможности, связанные с журналом браузера, например переход на предыдущую страницу.

public interface IWithBrowserHistory : IWebView
{
    event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;

    event WebView_OnCanGoBackUpdated CanGoBackUpdated;

    void GoBack();

    void GoForward();
}

Делегаты IWithBrowserHistory

public delegate void WebView_OnCanGoBackUpdated(bool value);

public delegate void WebView_OnCloseRequested();

События IWithBrowserHistory

Событие IWithBrowserHistory.CanGoForwardUpdated

Активируется при выполнении навигации. Делегат события предоставит значение, true если свойство CoreWebView2.CanGoForward имеет значение true.

Пример
(webView as IWithBrowserHistory).CanGoBackUpdated += OnCanGoBack;

void OnCanGoBack(bool value)
{
    BackButton.enabled = value;
}

Событие IWithBrowserHistory.CanGoBackUpdated

Активируется при выполнении навигации. Делегат события предоставит значение, true если свойство CoreWebView2.CanGoBack имеет значение true.

Пример
(webView as IWithBrowserHistory).CanGoForwardUpdated += OnCanGoForward;

void OnCanGoForward(bool value)
{
    ForwardButton.enabled = value;
}

Методы IWithBrowserHistory

Метод IWithBrowserHistory.GoBack

Переходит к предыдущей странице. Дополнительные сведения см. в базовом методе CoreWebView2.GoBack.

Пример
(webView as IWithBrowserHistory).GoBack();

Метод IWithBrowserHistory.GoForward

Переход на следующую страницу. Дополнительные сведения см. в базовом методе CoreWebView2.GoForward.

Пример
(webView as IWithBrowserHistory).GoForward();