Version: 2019.2
PC, Mac & Linux Standalone build settings
macOS

Multi-display (varias pantallas)

El Multi-display le permite a usted mostrar hasta 8 vistas de cámara diferentes de su aplicación hasta en 8 monitores diferentes al mismo tiempo. Usted puede utilizar esto para juegos de PC, maquinas arcade de juego e instalaciones simples para su exhibición pública.

Multi-display solamente corre en el modo standalone, y es soportado en Windows, Mac OS X y Linux.

Pre-visualizando Multi-display en su proyecto

Para ver las diferentes pantallas de los monitores:

Configure cada Camera para mostrar un monitor especifico, utilizando su Inspector. Usted puede asignar entre 1 y 8 pantallas de monitor vía la opción Target Display (ver Fig. 1).

Fig. 1: Inspector de la cámara con la opción Target Display
Fig. 1: Inspector de la cámara con la opción Target Display

Usted puede pre-visualizar cada pantalla la vista del juego, utilizando el menú desplegable Display en la esquina superior izquierda de la vista (ver Fig. 2).

Fig 2: Muestra pre-visualización en la esquina izquierda superior del Game View (vista del juego)
Fig 2: Muestra pre-visualización en la esquina izquierda superior del Game View (vista del juego)

Activando Multi-display

La pantalla predeterminada es un monitor, por lo que cuando corra su aplicación, usted necesita activar de manera explicita las pantallas adicionales vía script, utilizando Display.Activate. Usted explícitamente necesita activar cada pantalla adicional y, una vez esté activada, no la puede des-activar.

El mejor momento para activar pantallas adicionales es cuando cree una nueva escena. Una buena manera de hacer esto es adjuntar un componente script a la Camera predeterminada. Asegúrese de llamar Display.Activate solamente una vez durante el inicio. Puede que le resulte útil crear una pequeña escena inicial para probarlo.

Script Ejemplo

using UnityEngine;
using System.Collections;

public class DisplayScript : MonoBehaviour
{
    // Use this for initialization
    void Start()
    {
        Debug.Log("displays connected: " + Display.displays.Length);
        // Display.displays[0] is the primary, default display and is always ON.
        // Check if additional displays are available and activate each.
        if (Display.displays.Length > 1)
            Display.displays[1].Activate();
        if (Display.displays.Length > 2)
            Display.displays[2].Activate();
        ...
    }
    // Update is called once per frame
    void Update()
    {

    }
}

Soporte API

Las siguientes funciones API UnityEngine.Display son soportadas:

    public void Activate()

Esto activa una pantalla específica en la anchura y altura actual del monitor. Esta llamada debe ser hecha una vez cuando inicie una nueva escena. Puede ser llamada desde un script de usuario adjuntado a una Camera o GameObject dummy en una nueva escena.

public void Activate(int width, int height, int refreshRate)

Windows solamente: Esto activa una pantalla específica en la anchura y altura personalizada del monitor.

Controlando las posiciones de la pantalla del monitor

Por defecto, el computador de su usuario ordena las posiciones relativas de sus pantallas de los monitores basándose en su escritorio virtual X, Y. Para anular esto y que su aplicación muestre sin ordenar, comience su aplicación desde la linea de comandos y utilice la siguiente flag de linea de comando:

-multidisplay

PC, Mac & Linux Standalone build settings
macOS