【Unity】URPで複数カメラを使用している場合に、全てのカメラを合成したスクリーンショットを撮る
概要
趣味でUnityを触っている分には必要になるケースはあまり多くありませんが、実務でUnityを触っていると
- InGameを描画するためのカメラ
- UIを描画するカメラ
の2つを利用したいというケースがしばしばあります。
こういった複数のカメラをURPで使用している場合に、BuiltInと同じ感覚でスクリーンショット機能を実装しようとしたら結構ハマったので書き記すことにしました。
前提
描画パイプラインはURPを使っており、InGame用カメラのカメラスタックにUI用のカメラをOverlayに設定して追加している状態です。
実装
気をつける点としては、Camera.Render()を呼び出す順序がBuiltInの時と比較すると逆になることです。3つ以上のカメラを使用するときも同様で一番最後に描画されるCameraから順番にCamera.Render()を呼び出す必要があります。