Unityシェアするノベルゲームのセーブ画面のUIなど、ゲームの画面を画像素材として使用したい時があります。Unityのゲーム中にスクリーンショットを作成し、必要であればファイルに出力をし、ゲームオブジェクトとして使用する例をご紹介します。今回のサンプルではボタンを2つ用意し、それぞれ撮影ボタンと表示ボタンとして使用します。新しくスクリプトを作成し、コードは以下のようにします。先ほどのスクリプトをアタッチします。撮影用ボタンを作成します。UI>Buttonからボタンを作成し、OnClick()に先ほどのスクリプトのClickShootButton()を設定します。撮影用ボタンを押すことでスクリーンショットが撮影され、スクリプト内の「screenShotPath」変数を使って指定されているパスにファイルが保存されます。保存されたスクリーンショットを表示する場合は、もう1つUIを用意します。RawImageを作成し、撮影時に生成した「Texture2D」を貼り付けます。Component」ボタンから「Button」コンポーネントを追加します。RawImageを適当な位置に配置し、Scaleを見やすい大きさに調節しておきます。先ほどのスクリプトのShowSSImageを設定しておきます。撮影したスクリーンショットを表示することができます。撮影した画像へのパスを記憶しておけば、いつでも任意の画像を呼び出すことができます。撮影部分の処理はコルーチンのCreateScreenShot()で行なっています。カメラに描画されている内容をスクリーンショットとして使うので、そのフレームの描画を待つためにコルーチンを使ってフレームの最後まで待っています。カメラの描画内容から「Texture2D」を作成し、バイト配列に変換したあとpngファイルに書き出します。最後に、次に撮影する時に以前の画像が残らないようにtargetTextureに登録していた内容を削除しておきます。サンプルプロジェクト今回のサンプルプロジェクトはこちらです。GitHub.github.comスクリーンショットの保存先は、プロジェクトフォルダ直下になっています。撮影の際に画面に変化が出るように、回転するCubeをばら撒くようにしています。mig入社3年目のエンジニアです。iOS/Androidアプリの開発をしています。スポンサーリンクシェアするフォローするmig関連記事Unityで急にスクリプトが動作しなくなった時の話スクリプトが止まってしまった理由は、NullReferenceExceptionによる処理の停止。Nullを出してしまっても、スクリプトを止める事なく動作させる方法についてご紹介しています。サンプルプロジェクトも掲載しています。自動レイアウト機能による整列の影響を受けない方法をご紹介しています。サンプルプロジェクトも掲載しています。記事を読む【Unity】動的に要素が増える背景画像付きのScroolViewの実装方法UnityにおけるScrollViewコンポーネントと、それに伴う各コンポーネントの設定方法の記事です。サンプルプロジェクトも掲載しています。