LoginSignup
4
5

More than 5 years have passed since last update.

Unity 複数ディスプレイで複数カメラを扱う(Windows限定)

Posted at

マルチディスプレイ

UnityではWindowed,Full screen(ディスプレイを指定)のどちらかしか選択できませんが,以下の画像のようなマルチディスプレイ環境で別々のカメラビューを表示する方法です.

6.png

カメラ設定

例として上の画像の1と2の解像度の違うディスプレイにそれぞれ別のカメラビューを表示します.
基本的にはUnityのシーン上に複数のカメラを配置し,CameraコンポーネントのViewportRectの値をディスプレイ配置と同じ構成になるように設定します.

4.PNG

あとはプロジェクトをビルドし,こちらを参考にバッチファイルを作成,実行します.

スクリプト

これらの設定を簡単に行えるように以下のスクリプトを作成しました.
github

使い方

適当なゲームオブジェクトを作成してスクリプトをアタッチし,各ディスプレイの解像度,スクリーンの左上の位置を指定します.

7.PNG

実行します.

実行時にウィンドウ位置がずれる問題

こちらのようにフルスクリーンで実行する場合は問題ないかもしれませんが,特定のディスプレイのみにゲームウィンドウを表示する際にウィンドウ位置がずれる問題がありました.
そこで

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);
    }

ここでウィンドウの位置を変更しています.

おわりに

デバッグなどあまり行っていませんので不具合がありましたらお願いします.

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5