iOSの申請時に必要なキャプチャ画像を作成するUnityエディタ拡張
はじめに
Unityでゲーム更新して、再度iOSのアプリの申請をする際に、いちいち超めんどくさい作業がある。それが。。
ストア表示用に各iOSのキャプチャ画像をとることだあああ!!
いちいち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));
}
}
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));
}
}
以上
Author And Source
この問題について(iOSの申請時に必要なキャプチャ画像を作成するUnityエディタ拡張), 我々は、より多くの情報をここで見つけました https://qiita.com/inpax23/items/31dbde79bc545e67025c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .