API Reference for Mixed Reality WebView plugin (Preview)
The Microsoft Mixed Reality WebView plugin for Unity enables the integration of WebView2 functionality into your HoloLens 2 app. This WebView plugin for Unity simplifies the integration of WebView2 functionality into your HoloLens 2 app by wrapping the WebView2 control, automatically handling rendering, and automatically directing input to the WebView2 control.
This plugin also manages interop between Unity and WebView2, enabling communication between JavaScript and Unity via messages and events.
This plugin exposes a subset of the functionality that's available via CoreWebView2.
WebView2 on HoloLens 2 and the WebView plugin for Unity are both in Preview and are subject to change before general availability. The WebView2 Preview is available in the Insider Preview for Microsoft HoloLens. To access this preview, you must be enrolled in the Windows Insider Program; see Start receiving Insider builds in Insider preview for Microsoft HoloLens.
WebView2 and the WebView plugin are only supported on HoloLens 2 devices running the Windows 11 update. For more information, see Update HoloLens 2.
For information on getting started with the WebView plugin for Unity, see Get started with WebView2 in HoloLens 2 Unity apps.
IWebView Interface
The main interface for the WebView plugin for 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 Delegates
public delegate void WebView_OnNavigated(string path);
public delegate void WebView_OnCanGoForwardUpdated(bool value);
IWebView Events
IWebView.Navigated Event
Event triggered when CoreWebView2.SourceChanged Event is raised by WebView.
Example
webView.Navigated += OnNavigated;
private void OnNavigated(string uri)
{
UrlField.text = uri;
}
IWebView.WindowCloseRequested Event
Event triggered when CoreWebView2.WindowCloseRequested Event is raised by WebView.
Example
webView.WindowCloseRequested += OnWindowCloseRequested;
private void OnWindowCloseRequested()
{
Destroy(GameObject);
}
IWebView Properties
IWebView.GameObject Property
The top-level Unity GameObject entity that represents the WebView plugin in the scene. Readonly.
IWebView.Texture Property
The 2D Unity Texture2D
object that the WebView content is rendered to. Readonly
IWebView.Width Property
The width of the WebView texture and the WebView control. Note that the rendered dimensions of the IWebView
instance in the Unity scene are controlled by the GameObject
.
IWebView.Height Property
The height of the WebView texture and the WebView control. Note that the rendered dimensions of the IWebView
instance in the Unity scene are controlled by the GameObject
.
IWebView.Page Property
The URI currently loaded or being navigated to by the WebView control. Readonly
IWebView.OnceCreated Property
Task executes when the WebView control has been fully instantiated and ready to use. Readonly
Example
webView.OnceCreated.ContinueWith((task) => {
// Finish setting up plugin.
webview.Navigated += OnNavigated;
webview.WindowCloseRequested += OnWindowCloseRequested;
Load(initialURL);
}, TaskScheduler.FromCurrentSynchronizationContext());
IWebView Methods
IWebView.Resize Method
Changes the size of the WebView2 control and the Texture
. For details, see the underlying CoreWebView2Controller.Bounds Property.
Note that the rendered dimensions of the IWebView
instance in the Unity scene are controlled by the GameObject
.
Example
Resize(600, 400);
IWebView.Load Method
Navigates to the specified URI. For details, see the underlying CoreWebView2.Navigate Method.
Example
Load(new Uri("https://www.microsoft.com"));
IWebView.Dispose Method
Clears resources such as memory, handles, and callbacks that are related to an IWebView
instance.
Invoke this method when you are done with a particular IWebView
instance to ensure internal memory is properly freed. After Dispose
is called, the IWebView
instance should be considered invalid.
Example
void OnDestroy()
{
webView.Dispose();
}
IWithMouseEvents Interface
Supports mouse and pointer input for the WebView plugin for Unity.
public interface IWithMouseEvents
{
void MouseEvent(WebViewMouseEventData mouseEvent);
}
IWithMouseEvents Methods
IWithMouseEvents.MouseEvent Method
Propagates a WebViewMouseEventData
event to the WebView control. Depending on internal logic, the event results in calling either the CoreWebView2Controller.SendMouseInput Method or the CoreWebView2Controller.SendPointerInput Method.
Example
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 Interface
Interface for interop communication between Unity code and hosted WebView code.
To learn more about interop in WebView2, see Interop of native-side and web-side code.
public interface IWithPostMessage : IWebView
{
event WebView_OnPostMessage MessageReceived;
void PostMessage(string message, bool isJSON = false);
}
IWithPostMessage Delegates
public delegate void WebView_OnPostMessage(string message);
IWithPostMessage Events
IWithPostMessage.MessageReceived Method
Triggered when a new JavaScript message is received from the WebView control. For details, see the underlying CoreWebView2.WebMessageReceived Event.
Example
(webView as IWithPostMessage).MessageReceived += OnMessageReceived;
void OnMessageReceived(string message)
{
Debug.Log(message);
}
IWithPostMessage Methods
IWithPostMessage.PostMessage Method
Sends a JavaScript message to the hosted content in the WebView control. Depending on the isJSON
parameter, this will either result in calling the CoreWebView2.PostWebMessageAsString Method or the CoreWebView2.PostWebMessageAsJson Method.
var msg = new MyMessage("updateText", "Updated from Unity!");
(webView as IWithPostMessage).PostMessage(JsonUtility.ToJson(msg), true);
IWithBrowserHistory Interface
Handles functionality related to browser history, such as navigating to a previous page.
public interface IWithBrowserHistory : IWebView
{
event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;
event WebView_OnCanGoBackUpdated CanGoBackUpdated;
void GoBack();
void GoForward();
}
IWithBrowserHistory Delegates
public delegate void WebView_OnCanGoBackUpdated(bool value);
public delegate void WebView_OnCloseRequested();
IWithBrowserHistory Events
IWithBrowserHistory.CanGoForwardUpdated Event
Triggered when a navigation occurs. The event delegate will provide a true
value if CoreWebView2.CanGoForward Property is true
.
Example
(webView as IWithBrowserHistory).CanGoBackUpdated += OnCanGoBack;
void OnCanGoBack(bool value)
{
BackButton.enabled = value;
}
IWithBrowserHistory.CanGoBackUpdated Event
Triggered when a navigation occurs. The event delegate will provide a true
value if CoreWebView2.CanGoBack Property is true
.
Example
(webView as IWithBrowserHistory).CanGoForwardUpdated += OnCanGoForward;
void OnCanGoForward(bool value)
{
ForwardButton.enabled = value;
}
IWithBrowserHistory Methods
IWithBrowserHistory.GoBack Method
Navigates to the previous page. For details, see the underlying CoreWebView2.GoBack Method.
Example
(webView as IWithBrowserHistory).GoBack();
IWithBrowserHistory.GoForward Method
Navigates to the next page. For details, see the underlying CoreWebView2.GoForward Method.
Example
(webView as IWithBrowserHistory).GoForward();