You can use multi-display to display up to eight different Camera views of your application on up to eight different monitors at the same time. You can use this for setups such as PC games, arcade game machines, or public display installations.
Unity supports multi-display on:
Unity’s default display mode is one monitor only. When you run your application, you need use Display.Activate()
to explicitly activate additional displays. Once you activate a display, you can’t deactivate it.
The best time to activate additional displays is when your application creates a new Scene. A good way to do this is to attach a script component to the default Camera. Make sure you call Display.Activate()
only once during startup. As a best practice, you might find it helpful to create a small initial Scene to test your script.
using UnityEngine;
using System.Collections;
public class ActivateAllDisplays : MonoBehaviour
{
void Start ()
{
Debug.Log ("displays connected: " + Display.displays.Length);
// Display.displays[0] is the primary, default display and is always ON, so start at index 1.
// Check if additional displays are available and activate each.
for (int i = 1; i < Display.displays.Length; i++)
{
Display.displays[i].Activate();
}
}
void Update()
{
}
}
To preview different Camera views, follow these steps:
Make sure you’re in the Game view.
From the Display menu in the top-left corner, select the Display to Preview.
Unity supports the following UnityEngine.Display API methods:
Method | Description |
---|---|
public void Activate() |
Activates a specific display on the current monitor’s width and height. This call must be made once on starting a new Scene. It can be called from a user script attached to a Camera or dummy GameObject in a new Scene. |
public void Activate(int width, int height, int refreshRate) |
Windows only. Activates a specific display of custom width and height. On Linux and macOS X, secondary displays always use the display’s current resolution, if available. |
By default, the user’s computer sorts the relative positions of its display monitors based on its x, y virtual desktop. To override this so that your application displays without any sorting, start your application from the command line and use the -multidisplay
command line flag.