ゲーム画面を撮って保存し、様々な場所に流用したいと考える事があると思います。
筆者もよく高解像度ハイポリゴンのモデルを動かしてムービーを撮ったりします。高解像度ハイポリンゴンのモデルをそのままゲームに入れてしまうと重いですからね。ムービーにして圧縮すると容量を軽くできます。
ただし、今回紹介する方法はエディタ上で動く物です。ゲーム中にスクリーンショットや動画を取ってハイライトなどをする方法とはまた違った方法なので注意してください。
<Unity Recorderの導入の仕方>
Unityはこれらスクリーンショットやgif、動画を制作するにあたってとても便利な機能を用意してくれています。
それがUnity Recorderです。
まずは、このUnity Recorderの機能をUnity内に入れましょう。Package Managerを開いてください。
Package ManagerからUnity Recorderを導入します。
2019/7/6現在、Unity RecorderはPreview版になっています。まだ正式版ではないのですが、十分使える上に、そもそもエディタ上でしか動作しないのでゲームに含める事ができない為、Preview版でも特に問題はないです。
Preview版を加えるにはPackage Managerの上の方にあるAdvancedをクリックし、Show preview packagesをクリックする必要があります。
通信が入る為、ちょっと待たなくてはいけませんが、しばらく待つとPreview版の機能が一覧に載ってきます。
そこにあるUnity Recorderをクリックして、右下にあるInstallを押しましょう。
<Unity Recorderの使い方>
Installが完了したら上部メニューのWindow>General>Recorder>Recorder WindowでUnity Recorderを開く事ができます。
すると↓のようなウィンドウが開くと思います。左側にあるAdd New Recordersをクリックしましょう。
すると↓のようなメニューが表示されます。
ここで、何を記録するのかを選択します。Animation Clipならアニメーションを、Movieなら動画を、Image SequenceがスクリーンショットでGIF AnimationはGIF動画で、なんとAudioで音を記録する事もできます。
凄すぎUnity!
この中で目的の機能を選択してください。
画像系の機能はカメラを使う
さて、では動画、スクリーンショット、GIFの記録方法を解説していきます。何故この3つかと言うと、画像系の記録方法はほとんど変わらない為、ひとまとめにしている感じです。
ではこれら画像系はどのように記録していくかと言うと、Unity Recorderは主にカメラを使います。(使わないパターンもあります)
初期設定の状態ではGame Viewに表示されているものを記録していく感じになります。
例えば、このホームページの看板娘の↓の画像もUnity Recorderで撮っているのですが、
これはこういう感じで撮っています。
カメラの設定をSolid Colorで背景を白色にしているので↑のような感じになります。
まぁ、ぶっちゃけ↑のような感じならPCの機能のスクショをとればいい話なんですが、Unity Recorderは透明でスクショを撮る事も可能なので、キャラ以外の部分を透明にしたい時などに便利です。
というわけで、動画やスクリーンショットを撮りたい場合は、カメラを撮りたい物に合わせて、ゲームビューに映るようにしましょう。
Unity Recorderはゲームの再生中の画面を記録する
さて、カメラを設定できたらゲームを再生して、記録したい画面になるかどうかを見ましょう。
Unity Recorderはゲームの再生中の画面を記録します。
動画やGIFであれば再生中のものを記録して動画にしますし、スクリーンショットであれば再生中で表示されたフレーム全てを連続撮りしてくれます。
とりあえず試しに撮ってみましょう。START RECORDINGボタンを押します。
するとシーンが再生され、記録が始まります。するとSTART RECORDINGがSTOP RECORDINGに変わります。
記録を終わりたいところでSTOP RECORDINGを押せばOKです。
記録結果はPathの項目の右側にあるボタンを押せば確認できます。
例えばImage Sequenceであればゲームビューに映った画像をフレームごとに↓のような感じで保存してくれます。
今の状態だとjpgで保存しているのでカメラの白色背景が入っている感じですが、pngで保存すればカメラのアルファ値を加味してくれるので背景を透明にできます。
動画の場合は、カメラの背景をクロマキーの色に設定すれば編集がしやすいのではないでしょうか。
再生の途中から記録したい場合は、最初から再生しておいて記録したい場面になったらSTART RECORDINGを押せばOKです。
では、大まかな使い方はわかったと思うので細かい設定について解説していきます。
記録方法の設定
さて、先ほどはSTART RECORDINGを押したら勝手にシーンが再生されて、STOP RECORDINGを押したら勝手にシーンが止まったと思います。
Exit PlayModeのチェックを外せば記録を止めてもシーンは再生されたままになります。再生中に分けて記録したい時は外しておくと便利です。
また、先ほどは自分で記録をスタートして自分でストップしていましたが、色々な指定をする事もできます。特に1枚だけスクショを撮りたい場合は何フレームも映されても困ります。そういった時はRecord Modeの設定を変えましょう
Manual・・・手動でスタートして手動でストップします
Single Frame・・・記録するフレーム数を指定してその1フレームのみ記録します。
Frame Interval・・・記録する開始フレームと終了フレームを指定して、その間のフレームを記録します。
Time Interval(sec)・・・記録を開始する秒数と終了の秒数を指定してその秒数間のフレームを記録します。
記録のフレームレートを変えたい場合はFrame Rateの設定を変更します。
Constant・・・ゲームのフレームレートと関係なくレコーダー固定のフレームレートで記録します。
Variable・・・ゲームのフレームレートを使用します。ただし、ゲームが指定しているフレームレートを使用するだけで可変フレームレートにはなりません。(ゲーム中処理落ちしても記録される映像は処理落ちしていないものになる)
PlaybackがConstantならTarget。VariableならMaxになります。
Target・・・レコーダーのフレームレートを選択します。
Variable・・・レコーダーのフレームレートの上限となるフレームレートを設定します。
PlaybackがConstantだった場合に出てくる項目です。
ゲームのフレームレートがターゲットのフレームレートより早い場合チェックを入れておくといいらしいです。
すいません。ちょっとどういった効果があるのかよくわかりませんでした。とりあえずチェックを入れておくといいと思います。
Image Sequenceの設定
スクリーンショットを撮る機能です。
保存する形式を選択できます。png,jpeg,exrから選べます。
保存形式をpngかexrにした場合に出てきます。Captureの項目をGame View以外にすることによってチェックを入れる事ができるようになります。
これにチェックを入れる事により透明度を加味してキャプチャできるようになります、
保存する名前を指定します。
右にある+Wildcardsで名前に追加する文字列を選択できます。複数入れる事も可能です。
例えば<Frame>だったら名前に記録したフレーム数がつきます。
同じ名前で記録すると上書きされるので、この特性をうまく利用しましょう。<Take>を追加して、うまく利用すると上書きを防げます。
保存する場所を指定します。
「…」となっているボタンで保存するフォルダの参照を指定でき、右上へ矢印が出ているボタンで保存しているフォルダを開きます
主にファイル名を指定したい時に使用します。+Wildcardsで<Take>を指定していた場合、ファイル名にこの名前が追加されます。
記録を実行するたびに自動で1ずつ増えていってくれます。
キャプチャーする場所を指定します。
Game View・・・ゲームビュー
Targeted Camera・・・指定したカメラ
360 View・・・指定したカメラから360度
Render Texture Asset・・・指定したレンダーテクスチャ
Texture Sampling・・・指定したカメラの位置から指定した解像度
Movie
動画を撮る機能です。
保存する形式を選択できます。mp4,webmから選べます。
保存形式をwebmにした場合に出てきます。Captureの項目をGame View以外にすることによってチェックを入れる事ができるようになります。
これにチェックを入れる事により透明度を加味してキャプチャできるようになります、
保存する名前を指定します。
右にある+Wildcardsで名前に追加する文字列を選択できます。複数入れる事も可能です。
例えば<Frame>だったら名前に記録したフレーム数がつきます。
同じ名前で記録すると上書きされるので、この特性をうまく利用しましょう。<Take>を追加して、うまく利用すると上書きを防げます。
保存する場所を指定します。
「…」となっているボタンで保存するフォルダの参照を指定でき、右上へ矢印が出ているボタンで保存しているフォルダを開きます
主にファイル名を指定したい時に使用します。+Wildcardsで<Take>を指定していた場合、ファイル名にこの名前が追加されます。
記録を実行するたびに自動で1ずつ増えていってくれます。
キャプチャーする場所を指定します。
Game View・・・ゲームビュー
Targeted Camera・・・指定したカメラ
360 View・・・指定したカメラから360度
Render Texture Asset・・・指定したレンダーテクスチャ
Texture Sampling・・・指定したカメラの位置から指定した解像度
チェックを入れるとゲーム内のBGM・SEも録音します。
キャプチャする動画の画質を選択できます。
GIF Animation
保存する名前を指定します。
右にある+Wildcardsで名前に追加する文字列を選択できます。複数入れる事も可能です。
例えば<Frame>だったら名前に記録したフレーム数がつきます。
同じ名前で記録すると上書きされるので、この特性をうまく利用しましょう。<Take>を追加して、うまく利用すると上書きを防げます。
保存する場所を指定します。
「…」となっているボタンで保存するフォルダの参照を指定でき、右上へ矢印が出ているボタンで保存しているフォルダを開きます
主にファイル名を指定したい時に使用します。+Wildcardsで<Take>を指定していた場合、ファイル名にこの名前が追加されます。
記録を実行するたびに自動で1ずつ増えていってくれます。
キャプチャーする場所を指定します。
Targeted Camera・・・指定したカメラ
Render Texture Asset・・・指定したレンダーテクスチャ
Texture Sampling・・・指定したカメラの位置から指定した解像度
GIFの品質とサイズを指定します
Num Colors・・・色数を指定します。
Keyframe Interval・・・同じカラーパレットを共有するフレームの数です。この数を増やすとファイルサイズが小さくなり画質が低下します。
Max Tasks・・・並行してエンコードするフレーム数です。この数を増やすとGIFをエンコードする時間を短縮できます。