Introducción
En este artículo te presento un prototipo descargable para utilizar un segundo monitor en Unity para mostrar un minimapa. Esta solución está pensada para mostrar un Canvas con información en un segundo monitor.
En el siguiente video hablo sobre la solución para usar múltiples pantallas en Unity, las pruebas que hice, qué inconvenientes me surgieron, cómo ataqué el problema y muestro cómo funciona la solución en Unity.
Archivos de descarga e implementación en Unity
El archivo de descarga es un paquete de Unity que podemos importar directamente y recuperar la escena que se muestra en el video junto con todos los Assets.
Problemas con el Motor y Soluciones
Como explico en el video, existen varios problemas sin resolver con respecto a la implementación de una segunda pantalla en Unity.
Uno de los problemas que me encontré es cuando se usan dos monitores de distinta resolución. El motor aparentemente utiliza como referencia una de ellas y esto trae problemas con el escalador de Canvas.
Para resolver este problema utilizo un empty GameObject en el segundo Canvas como contenedor de todos los elementos. Esto permite que el usuario escale el segundo Canvas en caso de que esté mal ajustado a su monitor.
Otro problema que surgió es que no hay una manera práctica de detectar cuándo un monitor se conecta y se desconecta,
Cómo usar la Solución
Tomando como base el prototipo que viene en el paquete, hay que empezar a construir la interfaz gráfica que uno necesita.
La idea es construir la interfaz gráfica en el Canvas principal y seleccionar los elementos que queremos mostrar en el segundo Canvas, estos elementos los vamos a duplicar y colocar en el contenedor del segundo Canvas.
En el Canvas principal está asignado el Script «SecondDisplay», en el inspector hay un vector en el que tenemos que asignar todos los GameObjects del Canvas principal que van a ser trasladados al Canvas secundario, de esta forma, al activar el segundo monitor, esos elementos del Canvas principal se van a ocultar.
Para ver la ventana de configuración del segundo display se debe presionar la tecla F1, esto podemos cambiarlo en el script «SecondDisplay», anulamos la función en el método Update y se puede desplegar esa ventana desde donde se necesite.