Cursos
Módulo
Este curso proporciona al usuario nociones básicas de todos los elementos fundamentales de MRTK.
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Este artículo está destinado a los desarrolladores que usan WebView2 en aplicaciones envolventes HoloLens 2 Unity.
Importante
WebView2 en Hololens 2 sigue estando disponible. Sin embargo, se ha interrumpido la compatibilidad con WebView2 en Hololens 2; no hay correcciones de errores planeadas ni actualizaciones de contenido, y el soporte técnico ha finalizado. No se garantiza que las aplicaciones que usan WebView2 en Hololens 2 sigan funcionando.
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.
WebView2 solo funciona en dispositivos HoloLens 2 que ejecutan la actualización de Windows 11. Para obtener más información, vea Actualizar HoloLens 2.
Para las aplicaciones 2D habilitadas para WebView2 en HoloLens 2, consulta Introducción a WebView2 en aplicaciones WinUI 2 (UWP).
Al desarrollar una aplicación de HoloLens 2 Unity con WebView2, tenga en cuenta algunas limitaciones y problemas conocidos:
Elementos emergentes: los elementos emergentes no funcionan bien dentro de WebView2 dentro de las aplicaciones de Unity en HoloLens 2, pero funcionan bien en aplicaciones XAML 2D en el dispositivo. Evite elementos emergentes y use técnicas alternativas o diseños de interfaz de usuario, como elementos emergentes personalizados dentro de WebView mediante HTML, CSS y JavaScript.
Nuevas ventanas: las instancias de WebView2 en HoloLens 2 navegar por la misma ventana de forma predeterminada, a diferencia de en Escritorio. Siga este comportamiento predeterminado para mejorar la experiencia del usuario. Además, no se puede iniciar la ventana DevTools.
Autenticación empresarial: el uso automático de tokens de nivel de sistema operativo Sign-On único (SSO) no se admite actualmente en WebView2 en HoloLens 2. Los usuarios todavía pueden iniciar sesión proporcionando credenciales, excepto en los casos que requieren autenticación de nivel de dispositivo. El almacenamiento de cookies funciona según lo esperado.
Interacciones del usuario: a diferencia de las pizarras nativas HoloLens 2, WebView2 se interactúa mejor con mediante el uso de rayos de mano de interacción lejana. Es posible que no se admitan interacciones táctiles para deslizar y desplazarse.
Rendimiento: los sitios web complejos con un uso intensivo de JavaScript o la representación avanzada pueden afectar al rendimiento del sistema o a la velocidad de fotogramas de la aplicación host. Para obtener recomendaciones y limitaciones generales relacionadas con el rendimiento, consulte Descripción del rendimiento de la realidad mixta en la documentación de realidad mixta. Consulte también Optimización del rendimiento, a continuación.
La optimización del rendimiento de WebView2 en la aplicación HoloLens 2 Unity es fundamental para una experiencia de usuario fluida. Estas son algunas recomendaciones:
Limitar el número de instancias de WebView2: se recomienda usar solo una instancia de WebView2 dentro de una aplicación de Unity. Reutilice la misma instancia o desintega y cree una nueva según sea necesario. Tenga en cuenta que es posible que la eliminación del objeto prefabricado WebView de la escena no destruya la instancia de WebView2 subyacente. Debes llamar al Destroy()
método en el objeto de juego para destruirlo correctamente.
Aplicar técnicas generales de optimización de Unity: para optimizar el rendimiento de WebView2, use los enfoques de optimización estándar de Unity, como la eliminación de oclusión o la limitación de la velocidad de actualización. Para obtener más información, consulte Recomendaciones de rendimiento para Unity en la documentación de mixed reality.
Generar perfiles y supervisar el rendimiento de WebView2: hay varias maneras de generar perfiles del rendimiento de una aplicación de HoloLens 2 Unity:
Generador de perfiles de Unity: una herramienta integrada en Unity que le permite medir y optimizar el rendimiento de la aplicación en varias plataformas, incluidos HoloLens 2.
Visual Profiler: una característica del kit de herramientas de Mixed Reality que proporciona una vista en la aplicación del rendimiento de la aplicación.
PIX: una herramienta de optimización y depuración de rendimiento para Windows que también se puede usar para generar perfiles de aplicaciones de Unity en HoloLens 2.
Algunos métodos de navegación se muestran en Paso 7: Ampliación de la funcionalidad WebView2 en Introducción a WebView2 en HoloLens 2 aplicaciones de Unity (versión preliminar). La sección actual se expande sobre esa demostración.
Vea también:
La IWebView
interfaz expone algunos métodos, eventos y propiedades relacionados con la navegación por páginas. La funcionalidad principal que se expone aquí es la capacidad de navegar a una dirección URL determinada mediante Load(Uri url)
:
public interface IWebView
{
// Non-navigation methods are removed for clarity.
event WebView_OnNavigated Navigated;
Uri Page { get; }
void Load(Uri url);
void Reload(bool ignoreCache);
}
La IWithBrowserHistory
interfaz expone algunos métodos y eventos relacionados con la navegación por páginas. Esto permite principalmente a los desarrolladores navegar hacia delante y hacia atrás, como cabría esperar con una experiencia de exploración web típica:
public interface IWithBrowserHistory : IWebView
{
// Non-navigation methods are removed for clarity.
event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;
event WebView_OnCanGoBackUpdated CanGoBackUpdated;
void GoBack();
void GoForward();
}
El método CoreWebView2.SetVirtualHostNameToFolderMapping permite la asignación entre un nombre de host virtual y una ruta de acceso de carpeta, lo que hace que sea accesible para los sitios web que usan ese nombre de host. Este método asigna un nombre de dominio local a una carpeta local, de modo que el control WebView2 carga contenido de la carpeta local especificada al intentar acceder a un recurso para ese dominio.
El complemento WebView para Unity expone esta funcionalidad a través de la IWithVirtualHost
interfaz, que tiene un único método, SetVirtualHostMapping(string hostName, string folderPath)
:
public interface IWithVirtualHost : IWebView
{
void SetVirtualHostMapping(string hostName, string folderPath);
}
Para usar el SetVirtualHostMapping
método , establezca en hostName
cualquier cadena de cumplimiento de dirección URL válida, como webview2.sample
.
folderPath
puede ser una ruta de acceso absoluta o una ruta de acceso relativa al directorio de trabajo de la aplicación, como Assets\Html
.
Suponiendo que tenemos un archivo HTML llamado demo.html
en Assets\Html
, el siguiente fragmento de código muestra la carga demo.html
mediante el complemento WebView para Unity:
using Microsoft.MixedReality.WebView;
public class WebViewExample : MonoBehaviour
{
private void Start()
{
var webViewComponent = gameObject.GetComponent<WebView>();
webViewComponent.GetWebViewWhenReady((IWebView webView) =>
{
((IWithVirtualHost)webView).SetVirtualHostMapping("webview2.sample", "Assets\\Html");
// Navigate to our local content.
webViewComponent.Load(new Uri("http://webview2.sample/demo.html"));
});
}
}
Hay varias maneras de controlar la entrada en Unity para aplicaciones de realidad mixta.
Independientemente del sistema de entrada usado en la aplicación de Unity, se requiere código de interoperabilidad entre los distintos eventos de entrada de la aplicación y el complemento WebView para Unity. Esto significa traducir esos eventos (como eventos pointer) en un WebViewMouseEventData
objeto y, a continuación, reenviar esos eventos al complemento a través de la IWithMouseEvent
interfaz:
public interface IWithMouseEvents : IWithInputEvents
{
void MouseEvent(WebViewMouseEventData mouseEvent);
}
WebView2 no es consciente del sistema de entrada de Unity y probablemente tenga un sistema de coordenadas diferente al de la escena de Unity. Como resultado, cuando hay un evento de puntero hacia abajo, sus coordenadas deben traducirse al sistema de coordenadas del control WebView2. Además, el evento de puntero a abajo debe convertirse en un tipo de evento adecuado WebViewMouseEventData
.
Ejemplo simple:
using Microsoft.MixedReality.WebView;
public class WebViewExample : MonoBehaviour, IPointerDownHandler
{
// WebView setup steps skipped for brevity
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 = WebViewMouseEventData.EventType.MouseDown,
Button = WebViewMouseEventData.MouseButton.ButtonLeft,
TertiaryAxisDeviceType = WebViewMouseEventData.TertiaryAxisDevice.PointingDevice
};
// Propagate the event to the WebView plugin.
mouseEventsWebView.MouseEvent(mouseEvent);
}
}
En el ejemplo anterior, los eventos de puntero a abajo se convierten en WebViewMouseEventData
objetos y se reenvía al complemento WebView para Unity. Básicamente se convierte en un evento de mouse-down. Para crear eventos de clic del mouse, los eventos de puntero hacia arriba deben controlarse de forma similar.
En el ejemplo anterior, ConvertToWebViewSpace
no se implementa intencionadamente.
Referencia de API:
Documentos de Hololens:
Mixed Reality documentos:
Documentos de Unity:
Cursos
Módulo
Este curso proporciona al usuario nociones básicas de todos los elementos fundamentales de MRTK.
Documentación
Referencia de API para el complemento WebView de Mixed Reality (versión preliminar) - Mixed Reality
Referencia de API para el complemento WebView de Microsoft Mixed Reality para Unity.
Uso de WebView2 en HoloLens - Mixed Reality
Aprenda a usar WebView2 en aplicaciones holoLens.
Introducción a WebView2 en HoloLens 2 aplicaciones de Unity.