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();