Compartir a través de


Referencia de API para Mixed Reality complemento WebView (versión preliminar)

El complemento WebView de Microsoft Mixed Reality para Unity permite la integración de la funcionalidad de WebView2 en la aplicación HoloLens 2. Este complemento WebView para Unity simplifica la integración de la funcionalidad de WebView2 en la aplicación de HoloLens 2 ajustando el control WebView2, controlando automáticamente la representación y dirigir automáticamente la entrada al control WebView2.

Este complemento también administra la interoperabilidad entre Unity y WebView2, lo que permite la comunicación entre JavaScript y Unity a través de mensajes y eventos.

Este complemento expone un subconjunto de la funcionalidad que está disponible a través de CoreWebView2.

WebView2 en HoloLens 2 y el complemento WebView para Unity están en versión preliminar y están sujetos a cambios antes de la disponibilidad general. La versión preliminar de WebView2 está disponible en Insider Preview para Microsoft HoloLens. Para acceder a esta versión preliminar, debe estar inscrito en el Programa Windows Insider; consulte Empezar a recibir compilaciones de Insider en La versión preliminar de Insider para Microsoft HoloLens.

WebView2 y el complemento WebView solo se admiten en dispositivos HoloLens 2 que ejecutan la actualización de Windows 11. Para obtener más información, vea Actualizar HoloLens 2.

Para obtener información sobre cómo empezar a trabajar con el complemento WebView para Unity, consulte Introducción a WebView2 en HoloLens 2 aplicaciones de Unity.

IWebView (interfaz)

La interfaz principal del complemento WebView para 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();
}

Delegados de IWebView

public delegate void WebView_OnNavigated(string path);

public delegate void WebView_OnCanGoForwardUpdated(bool value);

Eventos IWebView

Evento IWebView.Navigated

Evento desencadenado cuando WebView genera el evento CoreWebView2.SourceChanged .

Ejemplo
webView.Navigated += OnNavigated;

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

Evento IWebView.WindowCloseRequested

Evento desencadenado cuando WebView genera el evento CoreWebView2.WindowCloseRequested .

Ejemplo
webView.WindowCloseRequested += OnWindowCloseRequested;

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

Propiedades de IWebView

Propiedad IWebView.GameObject

Entidad GameObject de Unity de nivel superior que representa el complemento WebView en la escena. Readonly.

IWebView.Texture (propiedad)

Objeto de Unity Texture2D 2D en el que se representa el contenido de WebView. Readonly

IWebView.Width (propiedad)

Ancho de la textura WebView y el control WebView. Tenga en cuenta que las dimensiones representadas de la IWebView instancia de la escena de Unity se controlan mediante .GameObject

IWebView.Height (propiedad)

Alto de la textura WebView y el control WebView. Tenga en cuenta que las dimensiones representadas de la IWebView instancia de la escena de Unity se controlan mediante .GameObject

IWebView.Page (propiedad)

El URI cargado o navegado actualmente por el control WebView. Readonly

IWebView.OnceCreated (propiedad)

La tarea se ejecuta cuando el control WebView se ha creado una instancia completa y está listo para usarse. Readonly

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

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

    Load(initialURL);

}, TaskScheduler.FromCurrentSynchronizationContext());

Métodos IWebView

Método IWebView.Resize

Cambia el tamaño del control WebView2 y .Texture Para obtener más información, vea la propiedad CoreWebView2Controller.Bounds subyacente.

Tenga en cuenta que las dimensiones representadas de la IWebView instancia de la escena de Unity se controlan mediante .GameObject

Ejemplo
Resize(600, 400);

IWebView.Load (método)

Navega al URI especificado. Para obtener más información, consulte el método CoreWebView2.Navigate subyacente.

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

Método IWebView.Dispose

Borra los recursos, como la memoria, los identificadores y las devoluciones de llamada que están relacionadas con una IWebView instancia.

Invoque este método cuando haya terminado con una instancia determinada IWebView para asegurarse de que la memoria interna está libre correctamente. Después Dispose de llamar a , la IWebView instancia debe considerarse no válida.

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

IWithMouseEvents (interfaz)

Admite la entrada del mouse y del puntero para el complemento WebView para Unity.

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

Métodos IWithMouseEvents

Método IWithMouseEvents.MouseEvent

Propaga un WebViewMouseEventData evento al control WebView. Dependiendo de la lógica interna, el evento da como resultado llamar al método CoreWebView2Controller.SendMouseInput o al método CoreWebView2Controller.SendPointerInput.

Ejemplo
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 (interfaz)

Interfaz para la comunicación de interoperabilidad entre el código de Unity y el código WebView hospedado.

Para obtener más información sobre la interoperabilidad en WebView2, consulte Interoperabilidad del código del lado nativo y del lado web.

public interface IWithPostMessage : IWebView
{
    event WebView_OnPostMessage MessageReceived;

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

IWithPostMessage Delegates

public delegate void WebView_OnPostMessage(string message);

Eventos IWithPostMessage

Método IWithPostMessage.MessageReceived

Se desencadena cuando se recibe un nuevo mensaje de JavaScript del control WebView. Para obtener más información, consulte el evento CoreWebView2.WebMessageReceived subyacente.

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

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

Métodos IWithPostMessage

Método IWithPostMessage.PostMessage

Envía un mensaje de JavaScript al contenido hospedado en el control WebView. Dependiendo del isJSON parámetro , esto dará lugar a llamar al método CoreWebView2.PostWebMessageAsString o al método CoreWebView2.PostWebMessageAsJson.

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

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

IWithBrowserHistory (Interfaz)

Controla la funcionalidad relacionada con el historial del explorador, como navegar a una página anterior.

public interface IWithBrowserHistory : IWebView
{
    event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;

    event WebView_OnCanGoBackUpdated CanGoBackUpdated;

    void GoBack();

    void GoForward();
}

Delegados IWithBrowserHistory

public delegate void WebView_OnCanGoBackUpdated(bool value);

public delegate void WebView_OnCloseRequested();

Eventos IWithBrowserHistory

Evento IWithBrowserHistory.CanGoForwardUpdated

Se desencadena cuando se produce una navegación. El delegado de eventos proporcionará un true valor si CoreWebView2.CanGoForward (propiedad) es true.

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

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

Evento IWithBrowserHistory.CanGoBackUpdated

Se desencadena cuando se produce una navegación. El delegado de eventos proporcionará un true valor si la propiedad CoreWebView2.CanGoBack es true.

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

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

Métodos IWithBrowserHistory

Método IWithBrowserHistory.GoBack

Navega a la página anterior. Para obtener más información, consulte el método CoreWebView2.GoBack subyacente.

Ejemplo
(webView as IWithBrowserHistory).GoBack();

Método IWithBrowserHistory.GoForward

Navega a la página siguiente. Para obtener más información, consulte el método CoreWebView2.GoForward subyacente.

Ejemplo
(webView as IWithBrowserHistory).GoForward();