けいごのなんとか

Unityユーザーとしてのブログ。ギリギリ路線走ってます。

Unity4.1の新機能 - UnityEngine.Display

これはiOSのAirPlayで動く

どんなことが出来るの?

このクラスは全てのディスプレイ情報を取得出来ます。

つまりマルチディスプレイにしていたらその分のディスプレイ情報が取得できる。

一般的な使い方は複数のカメラを使ってディスプレイごとに違うカメラを使う

f:id:anchan828:20130220232228j:plain

これはMacアプリのReflectionを使ってAirPlayで表示したもの。

ちゃんとディスプレイごとに違うカメラを使ってレンダリングが出来てる。

サンプル

ちょっとわかりにくいけどカメラが別々の場所にある

 

f:id:anchan828:20130220233150p:plain

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public Camera secondCamera; //2つめのカメラ
    
    void Start ()
    {
        //1つめのカメラ(メインカメラ)はメインディスプレイに映るよう設定
        Camera.main.SetTargetBuffers (Display.main.colorBuffer, Display.main.depthBuffer);
        secondCamera.enabled = false;
    }

    void Update ()
    {
        secondCamera.enabled = Display.displays.Length > 1; //マルチディスプレイじゃなかったらfalse
        if (Display.displays.Length > 1) {
            Display secondaryDisplay = Display.displays [1];
            
            secondCamera.SetTargetBuffers (secondaryDisplay.colorBuffer, secondaryDisplay.depthBuffer);
            secondaryDisplay.SetRenderingResolution (Display.main.renderingWidth, Display.main.renderingHeight); // Resolutionはメインと一緒にする(必須じゃないよ)
        }
    }
}