Freigeben über


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

Das Microsoft Mixed Reality WebView-Plug-In für Unity ermöglicht die Integration der WebView2-Funktionalität in Ihre HoloLens 2-App. Dieses WebView-Plug-In für Unity vereinfacht die Integration der WebView2-Funktionalität in Ihre HoloLens 2-App, indem das WebView2-Steuerelement umschlossen, das Rendering automatisch verarbeitet und Eingaben automatisch an das WebView2-Steuerelement geleitet werden.

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

Dieses Plug-In macht eine Teilmenge der Funktionalität verfügbar, die über CoreWebView2 verfügbar ist.

WebView2 auf HoloLens 2 und das WebView-Plug-In für Unity befinden sich beide in der Vorschau und können sich vor der allgemeinen Verfügbarkeit ändern. WebView2 Preview ist in der Insider Preview für Microsoft HoloLens verfügbar. Um auf diese Vorschauversion zugreifen zu können, müssen Sie beim Windows-Insider-Programm registriert sein. Weitere Informationen finden Sie unter 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 Update 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 Standard Schnittstelle 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

Das Ereignis wird ausgelöst, wenn das 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. Beachten Sie, dass die gerenderten Dimensionen der IWebView instance in der Unity-Szene durch gesteuert GameObjectwerden.

IWebView.Height-Eigenschaft

Die Höhe der WebView-Textur und des WebView-Steuerelements. Beachten Sie, dass die gerenderten Dimensionen der IWebView instance in der Unity-Szene durch gesteuert GameObjectwerden.

IWebView.Page-Eigenschaft

Der URI, der derzeit vom WebView-Steuerelement geladen wird oder zu dem navigiert wird. Readonly

IWebView.OnceCreated-Eigenschaft

Der Task 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 unter der zugrunde liegenden CoreWebView2Controller.Bounds-Eigenschaft.

Beachten Sie, dass die gerenderten Dimensionen der IWebView instance in der Unity-Szene durch gesteuert GameObjectwerden.

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 sich auf eine IWebView instance beziehen.

Rufen Sie diese Methode auf, wenn Sie mit einem bestimmten IWebView instance fertig sind, um sicherzustellen, dass der interne Speicher ordnungsgemäß freigegeben wird. Nachdem Dispose aufgerufen wurde, sollte die IWebView instance 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

Gibt ein WebViewMouseEventData Ereignis an das WebView-Steuerelement weiter. Abhängig von der internen Logik führt das Ereignis dazu, dass entweder die CoreWebView2Controller.SendMouseInput-Methode oder die CoreWebView2Controller.SendPointerInput-Methode aufgerufen wird.

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 Interop-Kommunikation zwischen Unity-Code und gehostetem WebView-Code.

Weitere Informationen zur Interop in WebView2 finden Sie unter Interop von nativem und webseitigem Code.

public interface IWithPostMessage : IWebView
{
    event WebView_OnPostMessage MessageReceived;

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

IWithPostMessage-Delegaten

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. Weitere Informationen finden Sie unter dem 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. Je nach Parameter führt dies isJSON 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 eine Navigation auftritt. Der Ereignisdelegat gibt einen true Wert an, wenn die CoreWebView2.CanGoForward-Eigenschaft ist true.

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

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

IWithBrowserHistory.CanGoBackUpdated-Ereignis

Wird ausgelöst, wenn eine Navigation auftritt. Der Ereignisdelegat gibt einen true Wert an, wenn die CoreWebView2.CanGoBack-Eigenschaft ist 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 unter der zugrunde liegenden CoreWebView2.GoBack-Methode.

Beispiel
(webView as IWithBrowserHistory).GoBack();

IWithBrowserHistory.GoForward-Methode

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

Beispiel
(webView as IWithBrowserHistory).GoForward();