Справочник по 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();