Version: 2019.2
Utilizando plantillas WebGL
Input en WebGL

Bloqueo del cursor y modo de pantalla completa en WebGL

El bloqueo del cursor (utilizando Cursor.lockState) y el modo de pantalla completa (utilizando Screen.fullScreen) ambos son soportados en Unity WebGL, implementados utilizando las APIs de HTML5 respectivas (Element.requestPointerLock y Element.requestFullscreen). Estas son soportadas en Firefox y Chrome, Safari actualmente no puede utilizar el modo de pantalla completa y el bloqueo del cursor.

Cómo habilitar el bloqueo del cursor y el modo de pantalla completa en WebGL?

Por motivos de seguridad, los navegadores van a solamente permitir el bloqueo del cursor o ir a modo de pantalla completa en respuesta directa a un evento iniciado por el usuario (como un mouse click o al presionar una tecla). Des-afortunadamente debido a la manera de cómo Unity maneja eventos (no tiene unos bucles separados de renderizado y eventos), Unity difiere el manejo de eventos a un punto dónde el navegador no verá una solicitud de pantalla completa o un bloqueo de cursor emitido de Unity scripting a una respuesta directa al evento el cual lo activo. Unity luego va a activar la solicitud en el siguiente evento iniciado por el usuario.

Con el fin de hacer que esto funcione con resultados aceptables, nosotros recomendados que usted active la solicitud del modo de pantalla completa o el bloqueo del cursor en eventos down (presionado para abajo) de mouse/tecla (como se opone a eventos up mouse/tecla como usted usualmente haría). De esta manera cuando la solicitud sea diferida al siguiente evento del usuario, este será activado cuando el usuario suelte el mouse o tecla.

Si usted está utilizando el componente UI.Button de Unity, usted puede lograr el comportamiento deseado al crear una sub-clase del Botón, el cual anula el OnPointerDown método.

Tenga en cuenta que los navegadores pueden mostrar un mensaje de notificación y/o preguntarle al usuario por permiso antes de ingresar al modo de pantalla completa o bloquear el cursor.

Utilizando plantillas WebGL
Input en WebGL