マルチディスプレイを使用すると、最高で8つの(アプリケーションの)カメラビューを、最高8つのモニタに同時に表示できます。これは PC ゲーム、アーケードゲーム機、パブリックなディスプレイでの簡単なインスタレーションなどに使用できます。
マルチディスプレイはスタンドアロンモードのみで機能します。また、Windows、Mac、Linux でサポートされます。
異なるモニタディスプレイを確認するには
それぞれの カメラ__を、インスペクター__ を使用して、特定のモニタに表示されるように設定します。 Target Display のオプション ( 図1 ) で、1~8 のディスプレイモニタを割り当てることが可能です。
Game ビューの上部左端の Display ドロップダウンメニューを使って ( 図 2 参照)、Game ビューで各ディスプレイをプレビューできます。
デフォルトのディスプレイは単独モニタになっているため、アプリケーションを実行する際に、追加のディスプレイをスクリプトで Display.Activate を使用してアクティベートする必要があります。それぞれ追加ディスプレイをアクティベートする必要があり、一度アクティベートしたら、ディアクティベートすることはできません。
追加ディスプレイのアクティベートは、新しいシーンを作成するときに行うのが最適です。これを行うには、デフォルトカメラにスクリプトコンポーネントを添付します。 Display.Activate は、起動時に一度だけ呼び出すようにしてください。それをテストする小さな最初のシーンを作成するのもよい方法かもしれません。
参考スクリプト
using UnityEngine;
using System.Collections;
public class DisplayScript : MonoBehaviour
{
// 初期化に使用
void Start()
{
Debug.Log("displays connected: " + Display.displays.Length);
// Display.displays[0] は主要デフォルトディスプレイで、常に ON。
// 追加ディスプレイが可能かを確認し、それぞれをアクティベートします。
if (Display.displays.Length > 1)
Display.displays[1].Activate();
if (Display.displays.Length > 2)
Display.displays[2].Activate();
...
}
// Update がフレームごとに1 回呼び出されます
void Update()
{
}
}
以下の UnityEngine.Display API 機能に対応しています。
public void Activate()
特定のモニタを、現在のモニタ幅・高さでアクティベートします。この呼出しは新しいシーンを開始するときに、一度だけ行われる必要があります。 これは、新しいシーン内の Camera やダミーの GameObject に添付されたユーザースクリプトから呼び出すことが可能です。
public void Activate(int width, int height, int refreshRate)
Windows のみ - 特定のディスプレイを、カスタムのモニター幅と高さでアクティベートします。
デフォルトでは、ユーザーのコンピューターは、コンピューターの X・Y の仮想デスクトップに基づいてディスプレイモニタの相対的な位置をソートします。アプリケーションがソートなしで表示するようにこれをオーバーライドするには、コマンドラインからアプリケーションを起動して下記のコマンドラインフラグを使用してください。
-multidisplay