Dokumentacja interfejsu API dla wtyczki WebView rzeczywistości mieszanej (wersja zapoznawcza)

Ważne

Widok WebView2 jest nadal dostępny. Jednak obsługa elementu WebView2 na urządzeniu HoloLens nie jest przerywana (bez poprawek usterek, aktualizacji zawartości ani pomocy technicznej) i dlatego nie możemy zagwarantować, że aplikacje będą nadal działać przez dłuższy czas.

Wtyczka WebView microsoft Mixed Reality dla aparatu Unity umożliwia integrację funkcji WebView2 z aplikacją HoloLens 2. Ta wtyczka WebView dla aparatu Unity upraszcza integrację funkcji WebView2 z aplikacją HoloLens 2, opakowując kontrolkę WebView2, automatycznie obsługując renderowanie i automatycznie kierując dane wejściowe do kontrolki WebView2.

Ta wtyczka zarządza również między środowiskami Unity i WebView2, umożliwiając komunikację między językiem JavaScript i aparatem Unity za pośrednictwem komunikatów i zdarzeń.

Ta wtyczka uwidacznia podzbiór funkcji, które są dostępne za pośrednictwem coreWebView2.

WebView2 na urządzeniu HoloLens 2 i wtyczki WebView dla aparatu Unity są dostępne w wersji zapoznawczej i mogą ulec zmianie przed ogólną dostępnością. Wersja zapoznawcza WebView2 jest dostępna w wersji zapoznawczej niejawnego programu Testów dla urządzenia Microsoft HoloLens. Aby uzyskać dostęp do tej wersji zapoznawczej, należy zarejestrować się w niejawnym programie testów systemu Windows; Zobacz Rozpoczynanie odbierania kompilacji niejawnych testerów w wersji zapoznawczej niejawnego programu Testów dla urządzenia Microsoft HoloLens.

WebView2 i wtyczka WebView są obsługiwane tylko na urządzeniach HoloLens 2 z aktualizacją systemu Windows 11. Aby uzyskać więcej informacji, zobacz Aktualizowanie urządzenia HoloLens 2.

Aby uzyskać informacje na temat rozpoczynania pracy z wtyczką WebView dla aparatu Unity, zobacz Wprowadzenie do usługi WebView2 w aplikacjach aparatu Unity dla urządzenia HoloLens 2.

IWebView, interfejs

Główny interfejs wtyczki WebView dla aparatu 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();
}

Delegaty IWebView

public delegate void WebView_OnNavigated(string path);

public delegate void WebView_OnCanGoForwardUpdated(bool value);

Zdarzenia IWebView

Zdarzenie IWebView.Navigated

Zdarzenie wyzwalane, gdy zdarzenie CoreWebView2.SourceChanged jest wywoływane przez element WebView.

Przykład
webView.Navigated += OnNavigated;

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

Zdarzenie IWebView.WindowCloseRequested

Zdarzenie wyzwalane, gdy element CoreWebView2.WindowCloseRequested Event jest zgłaszany przez element WebView.

Przykład
webView.WindowCloseRequested += OnWindowCloseRequested;

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

Właściwości elementu IWebView

IWebView.GameObject, właściwość

Jednostka GameObject najwyższego poziomu, która reprezentuje wtyczkę WebView w scenie. Tylko do odczytu.

IWebView.Texture, właściwość

Obiekt aparatu Unity Texture2D 2D renderowany przez zawartość elementu WebView. Tylko do odczytu

IWebView.Width, właściwość

Szerokość tekstury kontrolki WebView i kontrolki WebView. Renderowane wymiary IWebView wystąpienia w scenie aparatu Unity są kontrolowane przez element GameObject.

IWebView.Height, właściwość

Wysokość tekstury kontrolki WebView i kontrolki WebView. Renderowane wymiary IWebView wystąpienia w scenie aparatu Unity są kontrolowane przez element GameObject.

właściwość IWebView.Page

Identyfikator URI aktualnie załadowany lub przechodzi do niej przez kontrolkę WebView. Tylko do odczytu

IWebView.OnceCreated, właściwość

Zadanie jest wykonywane, gdy kontrolka WebView została w pełni utworzona i gotowa do użycia. Tylko do odczytu

Przykład
webView.OnceCreated.ContinueWith((task) => {

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

    Load(initialURL);

}, TaskScheduler.FromCurrentSynchronizationContext());

Metody IWebView

IWebView.Resize, metoda

Zmienia rozmiar kontrolki WebView2 i Texture. Aby uzyskać szczegółowe informacje, zobacz podstawową właściwość CoreWebView2Controller.Bounds.

Renderowane wymiary IWebView wystąpienia w scenie aparatu Unity są kontrolowane przez element GameObject.

Przykład
Resize(600, 400);

IWebView.Load, metoda

Przechodzi do określonego identyfikatora URI. Aby uzyskać szczegółowe informacje, zobacz podstawową metodę CoreWebView2.Navigate.

Przykład
Load(new Uri("https://www.microsoft.com"));

IWebView.Dispose, metoda

Czyści zasoby, takie jak pamięć, dojścia i wywołania zwrotne powiązane z wystąpieniem IWebView .

Wywołaj tę metodę po zakończeniu pracy z konkretnym IWebView wystąpieniem, aby upewnić się, że pamięć wewnętrzna jest prawidłowo zwolniona. Po Dispose wywołaniu IWebView należy uznać wystąpienie za nieprawidłowe.

Przykład
void OnDestroy()
{
    webView.Dispose();
}

IWithMouseEvents, interfejs

Obsługuje wprowadzanie myszy i wskaźnika dla wtyczki WebView dla aparatu Unity.

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

Metody IWithMouseEvents

IWithMouseEvents.MouseEvent, metoda

Propaguje WebViewMouseEventData zdarzenie do kontrolki WebView. W zależności od logiki wewnętrznej zdarzenie powoduje wywołanie metody CoreWebView2Controller.SendMouseInput lub Metody CoreWebView2Controller.SendPointerInput.

Przykład
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, interfejs

Interfejs do komunikacji międzyoperacyjnej między kodem aparatu Unity i hostowanym kodem WebView.

Aby dowiedzieć się więcej na temat międzyoperacyjności w programie WebView2, zobacz Interop of native-side and web-side code (Międzyoperacyjna strona natywna i kod po stronie internetowej).

public interface IWithPostMessage : IWebView
{
    event WebView_OnPostMessage MessageReceived;

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

Delegaty IWithPostMessage

public delegate void WebView_OnPostMessage(string message);

Zdarzenia IWithPostMessage

IWithPostMessage.MessageReceived, metoda

Wyzwalane po odebraniu nowego komunikatu JavaScript z kontrolki WebView. Aby uzyskać szczegółowe informacje, zobacz bazowe zdarzenie CoreWebView2.WebMessageReceived.

Przykład
(webView as IWithPostMessage).MessageReceived += OnMessageReceived;

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

Metody IWithPostMessage

IWithPostMessage.PostMessage, metoda

Wysyła komunikat JavaScript do hostowanej zawartości w kontrolce WebView. W zależności od parametru isJSON spowoduje to wywołanie metody CoreWebView2.PostWebMessageAsString lub Metody CoreWebView2.PostWebMessageAsJson.

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

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

IWithBrowserHistory, interfejs

Obsługuje funkcje związane z historią przeglądarki, takie jak przechodzenie do poprzedniej strony.

public interface IWithBrowserHistory : IWebView
{
    event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;

    event WebView_OnCanGoBackUpdated CanGoBackUpdated;

    void GoBack();

    void GoForward();
}

Delegaty IWithBrowserHistory

public delegate void WebView_OnCanGoBackUpdated(bool value);

public delegate void WebView_OnCloseRequested();

Zdarzenia IWithBrowserHistory

Zdarzenie IWithBrowserHistory.CanGoForwardUpdated

Wyzwalane po zakończeniu nawigacji. Delegat zdarzenia udostępni true wartość, jeśli właściwość CoreWebView2.CanGoForward ma wartość true.

Przykład
(webView as IWithBrowserHistory).CanGoBackUpdated += OnCanGoBack;

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

Zdarzenie IWithBrowserHistory.CanGoBackUpdated

Wyzwalane po zakończeniu nawigacji. Delegat zdarzenia dostarczy true wartość, jeśli właściwość CoreWebView2.CanGoBack to true.

Przykład
(webView as IWithBrowserHistory).CanGoForwardUpdated += OnCanGoForward;

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

Metody IWithBrowserHistory

IWithBrowserHistory.GoBack, metoda

Przechodzi do poprzedniej strony. Aby uzyskać szczegółowe informacje, zobacz podstawową metodę CoreWebView2.GoBack.

Przykład
(webView as IWithBrowserHistory).GoBack();

IWithBrowserHistory.GoForward, metoda

Przechodzi do następnej strony. Aby uzyskać szczegółowe informacje, zobacz podstawową metodę CoreWebView2.GoForward.

Przykład
(webView as IWithBrowserHistory).GoForward();