【メモ】UnityのGameウインドウをスクショするスクリプト

using UnityEngine;

/// <summary>
/// スクリーンショットをキャプチャするサンプル
/// </summary>
public class ScreenShotCapturer : MonoBehaviour
{
   private void Update()
   {
       // スペースキーが押されたら
       if (Input.GetKeyDown(KeyCode.Space))
       {
           //オブジェクト名を取得
           string name = transform.name;

           // スクリーンショットを保存
           CaptureScreenShot("C:/Users/user/Desktop/UnityScreenShot/" + name+".png");
       }
   }

   // 画面全体のスクリーンショットを保存する
   private void CaptureScreenShot(string filePath)
   {
       ScreenCapture.CaptureScreenshot(filePath);
   }
}

こちらの記事を参考にさせていただきました。
https://nekojara.city/unity-screenshot

参考元様からの変更点は下記2点です。

①ファイル名としてオブジェクト名を指定 ​

CaptureScreenShot("ScreenShot.png");

保存される画像名が「ScreemShot.png」で固定されて不便だったので、スクリプトをアタッチしたオブジェクトの名前を取得するように変更。オブジェクトの名前は、

Debug.Log(transform.name);

で取得できるのですが、このままファイル名に指定すると拡張子が含まれません。そこで、取得したファイル名をstringで文字列に変換して、+演算子で文字列「.png」と結合しました。

また、ファイルの保存先がUnityのプロジェクトフォルダ内になって不便なので、特定のディレクトリに必ず保存されるように変更。

オブジェクト名に保存先のファイルパスも併記すると良いようです。

C:\Users\user\Desktop\UnityScreenShot

という保存先に「test.png」という画像を保存したい場合、

 CaptureScreenShot("C:/Users/user/Desktop/UnityScreenShot/test.png");

とすると成功します。

終わり


この記事が気に入ったらサポートをしてみませんか?