やりたいこと
OSのスクリーンショット機能で撮影していたけど、切り取りしてリサイズしてが面倒。
Gameウィンドウをそのままの解像度で撮影できないものかと検索してみたところ、出来たのでその方法をメモ。
スクリプトを作成
Editorフォルダの中に作成する。
コード
using System; using UnityEngine; using UnityEditor; public class GameWindowScreenShot : Editor { static string path = "./Assets/ScreenShot/"; //command + shift + s [MenuItem("ScreenShot/Save %#s")] static void ScreenShot() { var filePath = path + "SS" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png"; Debug.Log("ScreenShot : " + filePath); ScreenCapture.CaptureScreenshot(filePath); } }
画像の保管場所
以下のコードの箇所で設定できる。
この場合は、アセットにScreenShotフォルダーを作成して、それを保管場所に設定してある。
static string path = "./Assets/ScreenShot/";
画像の名前
SSの後に撮影年月日時刻が秒単位まで入る。 該当コードは以下。
var filePath = path + "SS" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png";
スクリーンショットの撮り方
メニューバーに、ScreenShotの項目が増えてるので、そこのSaveを実行すると撮れる。
ショートカットキーは、Cmd(winならctrl) + Shift + S
Refleshをすると、アセットに作成したpngが表示される。
ショートカットキーを変更したい
設定箇所は、以下の部分の %#s のところで設定
既存のショートカットキーと被らないように注意。
[MenuItem("ScreenShot/Save %#s")]
% = Cmd(ctrl)
# = Shift
s = Sキー
参考:UnityEditor.MenuItem - Unity スクリプトリファレンス
解像度の設定
Gameウィンドウで設定した解像度でpng画像が作られる。
使用したメソッド
キャプチャーするメソッド
ScreenCapture-CaptureScreenshot - Unity スクリプトリファレンス
日付を取得するメソッド
日付や時刻を文字列に変換するには?:.NET TIPS - @IT
参考にしたサイト様
Unityで開発中画面のスクリーンショットを撮る | Unity | DoRuby
以上。