CameraDirector
SceneDirector・CanvasDirectorを作成する過程でCameraに関する制御が必要になったのでCameraDirectorを作成しました。Cameraを使って実現したかった機能は以下の2つです。
- Popupの背景にブラーエフェクト(ぼかし)を付ける
- UI上に3Dオブジェクトを表示する
今エントリではCameraを使って実現した機能をメモしておこうと思います(CameraDirectorの機能自体ではないですが)。
Popupの背景にブラーエフェクト(ぼかし)を付ける
UIにブラーエフェクトを取り入れるのにチャレンジしました。アズールレーンがPopup表示時にブラーをかけてるのを見て、スマホゲームでも可能なのだなと思ったので。
ブラーの実現には無料公式AssetのPostProcessingStackを利用することにしました。現時点ではUnity標準には付いていないのでAssetStoreからダウンロードする必要があります。標準バンドル希望。
これのDepthOfFieldを使うとブラーの効果を得られました。
Unity - Manual: Depth of Field
結果はこちら。
ただブラーは重たい処理なのでエフェクトを設定するCamera数は抑えるようにしていきたいところです。現Projectでは最大2つを想定しています(3Dゲーム部分用のCameraとUI用のCamera)。
UI上に3Dオブジェクトを表示する
前回のエントリに記述したとおり、3DオブジェクトはuGUIの制御を受けないので表示の前後関係を制御するにはCameraを使う必要があります。CameraなしだとUI→3Dオブジェクト→UIという表示順序の実現は難しいです。
3Dオブジェクトの上にUIを表示するときは、そのUI用に新しいCameraを作成します。そしてCameraのdepthを、3Dオブジェクトを表示しているCameraのdepthよりも大きくすることで、3Dオブジェクトよりも手前に描画します。