Справочник по API для подключаемого модуля WebView Смешанная реальность (предварительная версия)
Внимание
WebView2 по-прежнему доступен. Однако поддержка WebView2 в HoloLens прекращена (исправлений ошибок, обновлений содержимого или технической поддержки), поэтому мы не можем гарантировать, что приложения будут работать в течение любого длительного периода времени.
Подключаемый модуль 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. Дополнительные сведения см. в разделе Update HoloLens 2.
Сведения о начале работы с подключаемым модулем WebView для Unity см. в статье "Начало работы с WebView2" в приложениях HoloLens 2 Unity.
Интерфейс IWebView
Основной интерфейс подключаемого модуля 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 Event вызывается WebView.
Пример
webView.WindowCloseRequested += OnWindowCloseRequested;
private void OnWindowCloseRequested()
{
Destroy(GameObject);
}
Свойства IWebView
Свойство IWebView.GameObject
Сущность Unity GameObject верхнего уровня, представляющая подключаемый модуль WebView в сцене. Чтение.
Свойство IWebView.Texture
Объект 2D Unity Texture2D
, в который отображается содержимое WebView. Чтение
Свойство IWebView.Width
Ширина текстуры WebView и элемента управления WebView. Отрисованные измерения IWebView
экземпляра в сцене Unity управляются GameObject
.
Свойство IWebView.Height
Высота текстуры WebView и элемента управления WebView. Отрисованные измерения IWebView
экземпляра в сцене Unity управляются GameObject
.
Свойство IWebView.Page
URI, загруженный или перемещаемый элементом управления WebView. Чтение
Свойство IWebView.OnceCreated
Задача выполняется, когда элемент управления WebView полностью создан и готов к использованию. Чтение
Пример
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
если свойство true
CoreWebView2.CanGoForward Property.
Пример
(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();