Freigeben über


API-Referenz für Mixed Reality WebView-Plug-In (Vorschau)

Wichtig

WebView2 ist weiterhin verfügbar. Die Unterstützung für WebView2 auf HoloLens wird jedoch nicht mehr unterstützt (keine Fehlerbehebungen, Inhaltsupdates oder technischen Support), und wir können daher keine Garantie dafür geben, dass Anwendungen für einen längeren Zeitraum weiterhin funktionieren.

Das Microsoft Mixed Reality WebView-Plug-In für Unity ermöglicht die Integration von WebView2-Funktionen in Ihre HoloLens 2-App. Dieses WebView-Plug-In für Unity vereinfacht die Integration von WebView2-Funktionen in Ihre HoloLens 2-App durch Umschließen des WebView2-Steuerelements, das automatische Behandeln des Renderings und das automatische Weiterleiten von Eingaben an das WebView2-Steuerelement.

Dieses Plug-In verwaltet auch die Interoperabilität zwischen Unity und WebView2 und ermöglicht die Kommunikation zwischen JavaScript und Unity über Nachrichten und Ereignisse.

Dieses Plug-In macht eine Teilmenge der Funktionen verfügbar, die über CoreWebView2 verfügbar sind.

WebView2 für HoloLens 2 und das WebView-Plug-In für Unity befinden sich in der Vorschau und können vor der allgemeinen Verfügbarkeit geändert werden. Die WebView2 Preview ist in der Insider Preview für Microsoft HoloLens verfügbar. Um auf diese Vorschau zuzugreifen, müssen Sie im Windows-Insider-Programm registriert sein; siehe "Starten des Empfangens von Insider-Builds in der Insider-Vorschau für Microsoft HoloLens".

WebView2 und das WebView-Plug-In werden nur auf HoloLens 2-Geräten unterstützt, auf denen das Windows 11-Update ausgeführt wird. Weitere Informationen finden Sie unter Aktualisieren von HoloLens 2.

Informationen zu den ersten Schritten mit dem WebView-Plug-In für Unity finden Sie unter "Erste Schritte mit WebView2" in HoloLens 2 Unity-Apps.

IWebView-Schnittstelle

Die Hauptschnittstelle für das WebView-Plug-In für 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 Delegaten

public delegate void WebView_OnNavigated(string path);

public delegate void WebView_OnCanGoForwardUpdated(bool value);

IWebView-Ereignisse

IWebView.Navigated-Ereignis

Das Ereignis wird ausgelöst, wenn das CoreWebView2.SourceChanged-Ereignis von WebView ausgelöst wird.

Beispiel
webView.Navigated += OnNavigated;

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

IWebView.WindowCloseRequested-Ereignis

Ereignis ausgelöst, wenn CoreWebView2.WindowCloseRequested-Ereignis von WebView ausgelöst wird.

Beispiel
webView.WindowCloseRequested += OnWindowCloseRequested;

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

IWebView-Eigenschaften

IWebView.GameObject-Eigenschaft

Die Unity GameObject-Entität der obersten Ebene, die das WebView-Plug-In in der Szene darstellt. Readonly.

IWebView.Texture-Eigenschaft

Das 2D Unity-Objekt Texture2D , in das der WebView-Inhalt gerendert wird. Readonly

IWebView.Width-Eigenschaft

Die Breite der WebView-Textur und des WebView-Steuerelements. Die gerenderten Dimensionen der IWebView Instanz in der Unity-Szene werden von der GameObject.

IWebView.Height-Eigenschaft

Die Höhe der WebView-Textur und des WebView-Steuerelements. Die gerenderten Dimensionen der IWebView Instanz in der Unity-Szene werden von der GameObject.

IWebView.Page-Eigenschaft

Der aktuell geladene URI oder die Navigation durch das WebView-Steuerelement. Readonly

IWebView.OnceCreated-Eigenschaft

Die Aufgabe wird ausgeführt, wenn das WebView-Steuerelement vollständig instanziiert und einsatzbereit ist. Readonly

Beispiel
webView.OnceCreated.ContinueWith((task) => {

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

    Load(initialURL);

}, TaskScheduler.FromCurrentSynchronizationContext());

IWebView-Methoden

IWebView.Resize-Methode

Ändert die Größe des WebView2-Steuerelements und des Texture. Ausführliche Informationen finden Sie in der zugrunde liegenden CoreWebView2Controller.Bounds-Eigenschaft.

Die gerenderten Dimensionen der IWebView Instanz in der Unity-Szene werden von der GameObject.

Beispiel
Resize(600, 400);

IWebView.Load-Methode

Navigiert zum angegebenen URI. Ausführliche Informationen finden Sie unter der zugrunde liegenden CoreWebView2.Navigate-Methode.

Beispiel
Load(new Uri("https://www.microsoft.com"));

IWebView.Dispose-Methode

Löscht Ressourcen wie Arbeitsspeicher, Handles und Rückrufe, die mit einer IWebView Instanz zusammenhängen.

Rufen Sie diese Methode auf, wenn Sie mit einer bestimmten IWebView Instanz fertig sind, um sicherzustellen, dass interner Speicher ordnungsgemäß freigegeben wird. Nach Dispose dem Aufruf sollte die IWebView Instanz als ungültig angesehen werden.

Beispiel
void OnDestroy()
{
    webView.Dispose();
}

IWithMouseEvents-Schnittstelle

Unterstützt Maus- und Zeigereingaben für das WebView-Plug-In für Unity.

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

IWithMouseEvents-Methoden

IWithMouseEvents.MouseEvent-Methode

Verteilt ein WebViewMouseEventData Ereignis an das WebView-Steuerelement. Je nach interner Logik führt das Ereignis zum Aufrufen der CoreWebView2Controller.SendMouseInput-Methode oder der CoreWebView2Controller.SendPointerInput-Methode.

Beispiel
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-Schnittstelle

Schnittstelle für die Interoperabilitätskommunikation zwischen Unity-Code und gehosteten WebView-Code.

Weitere Informationen zur Interoperabilität in WebView2 finden Sie unter Interop von systemeigenem und webseitigem Code.

public interface IWithPostMessage : IWebView
{
    event WebView_OnPostMessage MessageReceived;

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

IWithPostMessage-Stellvertretungen

public delegate void WebView_OnPostMessage(string message);

IWithPostMessage-Ereignisse

IWithPostMessage.MessageReceived-Methode

Wird ausgelöst, wenn eine neue JavaScript-Nachricht vom WebView-Steuerelement empfangen wird. Ausführliche Informationen finden Sie im zugrunde liegenden CoreWebView2.WebMessageReceived-Ereignis.

Beispiel
(webView as IWithPostMessage).MessageReceived += OnMessageReceived;

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

IWithPostMessage-Methoden

IWithPostMessage.PostMessage-Methode

Sendet eine JavaScript-Nachricht an den gehosteten Inhalt im WebView-Steuerelement. isJSON Je nach Parameter führt dies entweder zum Aufrufen der CoreWebView2.PostWebMessageAsString-Methode oder der CoreWebView2.PostWebMessageAsJson-Methode.

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

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

IWithBrowserHistory-Schnittstelle

Behandelt Funktionen im Zusammenhang mit dem Browserverlauf, z. B. das Navigieren zu einer vorherigen Seite.

public interface IWithBrowserHistory : IWebView
{
    event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;

    event WebView_OnCanGoBackUpdated CanGoBackUpdated;

    void GoBack();

    void GoForward();
}

IWithBrowserHistory Delegaten

public delegate void WebView_OnCanGoBackUpdated(bool value);

public delegate void WebView_OnCloseRequested();

IWithBrowserHistory-Ereignisse

IWithBrowserHistory.CanGoForwardUpdated-Ereignis

Wird ausgelöst, wenn die Navigation auftritt. Der Ereignisdelegat stellt einen true Wert bereit, wenn die CoreWebView2.CanGoForward-Eigenschaft lautet true.

Beispiel
(webView as IWithBrowserHistory).CanGoBackUpdated += OnCanGoBack;

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

IWithBrowserHistory.CanGoBackUpdated-Ereignis

Wird ausgelöst, wenn die Navigation auftritt. Der Ereignisdelegat stellt einen true Wert bereit, wenn CoreWebView2.CanGoBack-Eigenschaft lautet true.

Beispiel
(webView as IWithBrowserHistory).CanGoForwardUpdated += OnCanGoForward;

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

IWithBrowserHistory-Methoden

IWithBrowserHistory.GoBack-Methode

Navigiert zur vorherigen Seite. Ausführliche Informationen finden Sie in der zugrunde liegenden CoreWebView2.GoBack-Methode.

Beispiel
(webView as IWithBrowserHistory).GoBack();

IWithBrowserHistory.GoForward-Methode

Navigiert zur nächsten Seite. Ausführliche Informationen finden Sie unter der zugrunde liegenden CoreWebView2.GoForward-Methode.

Beispiel
(webView as IWithBrowserHistory).GoForward();