13
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Unity】指定した解像度のスクリーンショットを実機なし・エディタだけで撮る方法【2017.1対応】

Last updated at Posted at 2017-10-30

はじめに

Unityで作ったアプリをiTunes Connect(iTC)にアップロード、「さぁ審査提出だ!」と思ったら、iPad用のスクショを撮ってなかった。そもそもiPadなんて持ってないしシミュレータ用にビルドしてスクショを撮るのはめんどくさいコンパイルに時間的なコストがかかるうえに貧弱なマシンだとシミュレータもまともに動かない。ムダなこと💩のごとし。

既存のやり方コピペでいけるっしょ→いけない

すでに有用なエディタ拡張があることを教えてもらいTry。

Unityエディタ上からGameビューのスクリーンショットを撮るEditor拡張
https://qiita.com/dj_kusuha/items/13a68474edfd78e41b82

これで撮ったら変なのが撮れた。
スクリーンショット 2017-10-30 20.51.49.png

  • 写ってる画面がなぜか小さい
  • タブとかウィンドウ全部入りになってる

どうやらScreenCapture.CaptureScreenshot(そもそもApplication.CaptureScreenshotは使えなくなった)の仕様が変わったらしい。マジ卍。

Texture2D.ReadPixelsでできた

ScreenCapture.CaptureScreenshotを使わずに、カメラに写ってるものをテクスチャ化するRenderTextureを内部的に使うらしいTexture2D.ReadPixelsで書き換えたらうまくいった。

撮り方

1. Gameウィンドウで解像度を指定する

こんな感じ
スクリーンショット 2017-10-30 21.32.54.png

2. エディタ拡張を書いてスクショを撮る

以下のスクリプトをEditor以下に入れてCtrl + Shift + F12で呼び出すorメニューから実行する。
エディタ拡張でコルーチンを使うために UniRx を使っているので入れてください。

CaptureScreenshotFromEditor.cs
using System.Collections;
using UniRx;
using UnityEditor;
using UnityEngine;

/// <summary>
/// Unityエディタ上からGameビューのスクリーンショットを撮るEditor拡張
/// </summary>
public class CaptureScreenshotFromEditor : Editor
{
    /// <summary>
    /// キャプチャを撮る
    /// </summary>
    /// <remarks>
    /// Edit > CaptureScreenshot に追加。
    /// HotKeyは Ctrl + Shift + F12。
    /// </remarks>
    [MenuItem("Edit/CaptureScreenshot #%F12")]
    private static void CaptureScreenshot()
    {
        var fileName = System.DateTime.Now.ToString("スクリーンショット yyyy-MM-dd HH.mm.ss") + ".png";
        Observable.FromCoroutine(() => CaptureCoroutine(fileName)).Subscribe();
    }

    private static IEnumerator CaptureCoroutine(string fileName)
    {
        var texture = new Texture2D(Screen.width, Screen.height, TextureFormat.ARGB32, false);

        yield return new WaitForEndOfFrame();

        texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
        texture.Apply();

        var bytes = texture.EncodeToPNG();
        Destroy(texture);
        System.IO.File.WriteAllBytes(fileName, bytes);

        Debug.Log("ScreenShot: " + fileName);
    }
}

3. うまく撮れる

Yay!😃

スクリーンショット 2017-10-30 21.03.19.png

参考

作ったアプリ

今流行りの仮想通貨(ビットコイン・アルトコイン・トークン)の価格を一覧表示するアプリです。
国内外15以上の取引所・25以上の通貨に対応してるすごいやつです。是非ダウンロードしてみてください!

Cryptopippi

screenshot1.png screenshot2.png screenshot3.png screenshot4.png screenshot5.png

13
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?