1
4

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.

iOSの申請時に必要なキャプチャ画像を作成するUnityエディタ拡張

1
Last updated at Posted at 2019-10-22

はじめに

Unityでゲーム更新して、再度iOSのアプリの申請をする際に、いちいち超めんどくさい作業がある。それが。。
ストア表示用に各iOSのキャプチャ画像をとることだあああ!!
image.png
いちいち4つもつくるのしんどい!
めんどくさすぎてアップデートしたくない。。

と嘆いていたのですが、
実はこれGameViewのキャプチャを使って申請すれば通ります。
もっと言うと、iPadProの第三世代と第二世代は同じキャプチャでOK。(画面サイズ同じだし)
というわけで、最低限必要な3つのキャプチャを一気にとれるスクリプトを書いてみました。

作り方

以下をありがたく使わせていただき
UnityEditorでコルーチンが使える拡張
ScriptからGameViewSizeを作成、また設定するヘルパークラス
以下を参考に改造していきます。
Gameビューのキャプチャをとる拡張

コード

using UnityEditor;
using UnityEngine;
using System.Collections;
using Kyusyukeigo.Helper;
using UnityExtensions;

/// <summary>
/// iOS申請用のキャプチャを撮るEditor拡張
/// </summary>
public class CaptureScreenshotFromEditor : Editor
{
    // ※使用しているプラットフォームによって変えてください
    const GameViewSizeGroupType TargetGameViewSizeGroupType = GameViewSizeGroupType.Standalone;
    // ※保存先フォルダ。空の場合はプロジェクトの最上層に保存されます。
    const string SaveFolder = "";

    private class GameViewSize
    {
        public string Name { get; private set; }
        public int X { get; private set; }
        public int Y { get; private set; }
        public GameViewSize(string name, int x, int y)
        {
            Name = name;
            X = x;
            Y = y;
        }
    }
    private static GameViewSize[] _screenSizes = {
        new GameViewSize("iPhone_5_5",1242,2208),
        new GameViewSize("iPhone_6_5",1242,2688),
        new GameViewSize("iPad_12_5",2048,2732),
    };

    /// <summary>
    /// キャプチャを撮る
    /// </summary>
    [MenuItem("Edit/CaptureScreen #%F12")]
    private static void CaptureGameView()
    {
        EditorCoroutine.Start(CaptureSequence());
    }
    static IEnumerator CaptureSequence()
    {
        for (int i = 0; i < _screenSizes.Length; i++)
        {
            var size = _screenSizes[i];
            if (!ContainsGameViewSize(size))
            {
                AddCustomSize(size);
            }
            ChangeGameViewSize(size);
            ScreenShot(size);
            yield return null;
        }
        Debug.Log("おわったよ☆");
    }
    // GameViewSizeHelperの引数が多いので、ラッパーを作っておく
    static bool ContainsGameViewSize(GameViewSize gameViewSize)
    {
        return GameViewSizeHelper.Contains(
        TargetGameViewSizeGroupType,
        GameViewSizeHelper.GameViewSizeType.FixedResolution,
        gameViewSize.X, gameViewSize.Y, gameViewSize.Name);
    }
    static void AddCustomSize(GameViewSize gammeViewSize)
    {
        GameViewSizeHelper.AddCustomSize(
        TargetGameViewSizeGroupType,
        GameViewSizeHelper.GameViewSizeType.FixedResolution,
        gammeViewSize.X, gammeViewSize.Y, gammeViewSize.Name);
    }
    static void ChangeGameViewSize(GameViewSize gameViewSize)
    {
        GameViewSizeHelper.ChangeGameViewSize(TargetGameViewSizeGroupType,
        GameViewSizeHelper.GameViewSizeType.FixedResolution,
        gameViewSize.X, gameViewSize.Y, gameViewSize.Name);
    }
    // スクリーンショット本体
    static void ScreenShot(GameViewSize gameViewSize)
    {
        var filename = string.Format("{0}_{1}.png", System.DateTime.Now.ToString("yyyyMMdd-HHmmss"), gameViewSize.Name);
        Debug.Log(string.Format("スクリーンショット! :{0} ", filename));
        ScreenCapture.CaptureScreenshot(string.Format("{0}{1}", SaveFolder, filename));
    }
}

以上

1
4
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
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?