マルチディスプレイ
UnityではWindowed,Full screen(ディスプレイを指定)のどちらかしか選択できませんが,以下の画像のようなマルチディスプレイ環境で別々のカメラビューを表示する方法です.
カメラ設定
例として上の画像の1と2の解像度の違うディスプレイにそれぞれ別のカメラビューを表示します.
基本的にはUnityのシーン上に複数のカメラを配置し,CameraコンポーネントのViewportRectの値をディスプレイ配置と同じ構成になるように設定します.
あとはプロジェクトをビルドし,こちらを参考にバッチファイルを作成,実行します.
スクリプト
これらの設定を簡単に行えるように以下のスクリプトを作成しました.
github
使い方
適当なゲームオブジェクトを作成してスクリプトをアタッチし,各ディスプレイの解像度,スクリーンの左上の位置を指定します.
実行します.
実行時にウィンドウ位置がずれる問題
こちらのようにフルスクリーンで実行する場合は問題ないかもしれませんが,特定のディスプレイのみにゲームウィンドウを表示する際にウィンドウ位置がずれる問題がありました.
そこで
MultiDisplayScript.cs
void Start()
{
#if UNITY_EDITOR
return;
#endif
int handle = GetForegroundWindow();
MoveWindow(handle, (int)Position.x, (int)Position.y, (int)fRect.x, (int)fRect.y, 1);
}
ここでウィンドウの位置を変更しています.
おわりに
デバッグなどあまり行っていませんので不具合がありましたらお願いします.