【Unity】ゲーム画面を1秒に1回画像として保存する

Unity でゲーム画面を1秒に1回撮影して画像として保存する方法の紹介です。

本記事は、開発中の Editor の GameView 表示を一定時間ごとに画面のスクリーンショットを連続で自動撮影して保存したい、のような場合にどうすればよいのかの紹介です。

撮影には公式パッケージの Recorder を使用します。Recorder は動画撮影でよく使用されますが、静止画も保存することができます。現在 Editor 上で編集しているゲーム画面を実行し定期的に画面を撮影 → 画像化することができます。

この機能は開発中にエディタを操作している人が GameView の表示内容を撮影する事ができます。リリース後にユーザーがゲームをプレイ中の画面をスクリーンショットとして保存する事はできません。

確認環境

本記事は以下環境で動作を確認しています。

  • Unity 2021.3
  • Windows11

パッケージの導入

まずプロジェクトに Recorder パッケージを追加します。パッケージマネージャーの Unity Registry に「Recorder」という項目があるのでこれをインストールします。

導入後は Editor のメニューから以下のメニューを選択して録画用のウインドウを表示します。

Window > Genrral > Recorder > Recorder Window

以下のようなウインドウが表示されます。

録画の準備

表示されたウインドウに以下の設定を行ってい行きます。

  • (1) Add Recorder > Image Sequnce で画像を保存する大本の設定を追加
  • (2) Output Resolution:保存する画像の大きさ
  • (3) Aspect Ratio:録画する画像の縦横比 → スマホの縦長の場合9:16でプリセットと逆です
  • (4) Media File Format:保存する画像形式を指定
  • (5) OutputFile:画像の保存先

次に保存する間隔を指定します。

FrameRate の項目から Target FPS をカスタムにして Value を 1 に指定します。これで1秒間に1回になります。1秒間に2回なら2、逆に2秒に1回なら0.5を指定します。

録画を開始する

録画を開始する方法は2通りあります。

(1) 通常通り Editor を再生して後から録画ボタンを押す (2) Recorder の録画ボタンを押してゲームを開始する

録画の開始は以下のレコーダーの赤丸再生ボタンが実際は押せるのでこれを押して録画を開始します。

最初から録画しておきたい場合は(2)、あらかじめゲームは開始しておいて好きなところから録画する場合(1)です。

(2) の場合録画ボタンを押したら再生ボタンを押したときと同じようにゲームが開始されます。この時録画も同時に始まります。

試しに動かしてみる

とりあえず以下のように1秒ごとにカウントアップする画面を作成して、、

録画ボタンを押してゲームを押して録画を開始します。

そうすると出力先のフォルダにファイルが次々に保存されていきます。

ファイルの中身は以下のように1秒ごとに保存されています。

大きいサイズの画像を1秒間に60枚などの短い間隔で保存する設定にするとゲームの動作速度がかなり低下します。

この時速度が遅くなるだけで録画自体は正常にできています。