これやりましたってプルリクエストなどに簡易的にスクリーンショットを載せたいのだが,ゲーム画面だけトリミングするのが面倒なので Unity エディタで取れるようにした.

概要

次のような方針にする.とにかく簡単に取りたい.

  • とりあえず簡単にスクリーンショットを取りたいので ScreenCapture.CaptureScreenshot で取る
  • また,Unity エディタにショートカットを設定して,さくっと取れるようにする

環境

  • Unity 2018.2.16f1 Personal
  • macOS 10.13.6 (17G65)

実装する

using System.IO;
using UnityEditor;
using UnityEngine;

namespace Editor
{
    public class Screenshot
    {
        [MenuItem("Tools/Take Screenshot %#p")]
        public static void TakeScreenshot()
        {
            var assetDir = new DirectoryInfo(Application.dataPath);
            var screenshotsDir = assetDir.Parent.CreateSubdirectory("Screenshots");
            var file = $"{System.DateTime.Now:yyyyMMddHHmmss}.png";

            var path = Path.Combine(screenshotsDir.FullName, file);
            ScreenCapture.CaptureScreenshot(path);

            Debug.Log($"Saved screenshot: {path}");
        }
    }
}

プロジェクトルートに Screenshots ディレクトリを作ってその中にスクリーンショットを保存する. MenuItem アトリビュートを使ってキーボードショートカット Cmd + Shift + P を設定した.

余談だが,出力ファイル名を ISO8601 でフォーマットした時刻にしていたら,出力時に :/ に置換されてしまう問題があったので適当なフォーマット(yyyyMMddHHmmss)にした.

使い方

  • Unity エディタでプロジェクトを Run する
  • Cmd + Shift + P を押す(または,メニューから Tools > Taks Screenshot を選択する)

まとめ

  • ScreenCapture.CaptureScreenshot でスクリーンショットを取った
  • MenuItem アトリビュートでキーボードショートカットを設定した

さくっとスクリーンショットを取れるようになった.プルリクにがんがん貼っていきたい.

参考