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 GameObject
werden.
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 GameObject
werden.
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 GameObject
werden.
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();