なんとなく雰囲気で設定されがち(?)なCanvasのRender Modeについてわかりやすくまとめてみました。
Unity2018.3.1
基本的な考え方
平面上に表示されるGUIも結局は3D空間上に置かれたGameObjectなので、Cameraに映すことで描画されます。
CanvasのRender Modeとは「GUIをカメラにどのように映すか」を設定する項目です。
Render Modeには下記の三つが存在します。
- Screen-Space Overlay
- Screen-Space Camera
- World Space
以下、この三つについて説明していきます。
World Space
まずRender ModeをWorld Spaceにします。
この設定は一番使う機会が少ないと思いますが、便宜上最初に説明します。
World SpaceとはCanvasをワールド空間上の決まった位置に配置する設定です。
Canvasは単純にワールド空間に置かれているだけなので、カメラが移動すれば映らなくなります。
単純にワールド空間に置かれているだけなので、Perspectiveなカメラで斜めから移せば斜めに映ります。
単純にワールド空間に置かれているだけなので、他のオブジェクトがカメラの範囲内にあれば映ります。
またこの設定の場合のみ、Canvasの位置を自由に変更できます。
Screen-Space Camera
World Spaceのカメラは自由度が高いですが、Canvasを自由な位置に配置したいケースは実は多くありません。
大体はカメラの描画範囲いっぱいに一個のCanvasが映っていれば十分です。
そんなときにはRender ModeをScreen-Space Cameraに設定します。
すると、Canvasが常にCameraにくっついてくるようになります。
カメラの範囲内に他のオブジェクトがあれば移りますが、
前節のWorld Spaceと異なりCameraにはGUIが追従してきます。
カメラとの距離はCanvasのPlane Distanceで設定します。
Perspectiveなカメラに映すこともできます。
Screen-Space Overlay
最後にScreen-Space Overlayに設定してみます。
この設定では、Canvasは常に最前面に描画され、スクリーン全面に配置されます。
Cameraに映してるわけではないので、GUI用のCameraは必要ありません。
常に最前面に描画されるので、前節のように前後に他のオブジェクトを映すことができません。
正確には他のカメラで映せば後ろに映すことはできますが、手前には映せません。
一番お手軽に使えるけど制限はそれなり多い設定です。
以上、三つのRender Modeについて説明しました。