CameraDirector

 SceneDirector・CanvasDirectorを作成する過程でCameraに関する制御が必要になったのでCameraDirectorを作成しました。Cameraを使って実現したかった機能は以下の2つです。

  • Popupの背景にブラーエフェクト(ぼかし)を付ける
  • UI上に3Dオブジェクトを表示する

 今エントリではCameraを使って実現した機能をメモしておこうと思います(CameraDirectorの機能自体ではないですが)。

Popupの背景にブラーエフェクト(ぼかし)を付ける

 UIにブラーエフェクトを取り入れるのにチャレンジしました。アズールレーンがPopup表示時にブラーをかけてるのを見て、スマホゲームでも可能なのだなと思ったので。

 ブラーの実現には無料公式AssetのPostProcessingStackを利用することにしました。現時点ではUnity標準には付いていないのでAssetStoreからダウンロードする必要があります。標準バンドル希望。

assetstore.unity.com

 これのDepthOfFieldを使うとブラーの効果を得られました。

Unity - Manual: Depth of Field

 結果はこちら。

f:id:kema8351:20180620224411j:plain

 ただブラーは重たい処理なのでエフェクトを設定する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オブジェクトよりも手前に描画します。