いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU

Unity : Gitなどで共有時のビルド対象プラットフォームを固定する

{スポンサーリンク}
{スポンサーリンク}

UnityはLibraryディレクトリがないプロジェクトをPCビルド設定で開きます。

あまつさえアセットのインポートまでしてしまうため、「Android用のプロジェクトなのにー!」とハンカチーフを噛みながらプログレスバーをじっと見つめるという状況がたまにあります。

これはGitなどで複数人でプロジェクトを共有して、Libraryディレクトリを管理から外した場合に、割とイラつく部分です。

コマンドラインでbuildTargetを指定して開くという方法もありますが、実はプロジェクト内にスクリプトを一つ置いておくだけで回避できたりします。

Unity5.5まで

Assetsディレクトリの下にEditorディレクトリを作成し、下のスクリプトを置きます。

using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
public class Startup {
    static Startup()
    {
        EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android);
    }
}

これだけで、Gitからチェックアウトしたプロジェクトは最初からAndroid設定で開きます。
iOSの場合はBuildTarget.iOSを指定するだけ。

Unity5.6の場合

文法が変わり、BuildTargetGroupの設定が必要になっています。

        EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS);

仕掛け

まずInitializeOnLoad属性がついたクラスのstaticコンストラクタは、Unity起動直後に真っ先に実行されます。

docs.unity3d.com

さらにエディター用のEditorUserBuildSettings.SwitchActiveBuildTarget関数を使うと、ビルドターゲットを切り替えることができます。

docs.unity3d.com

つまりプロジェクト起動後に真っ先にビルドターゲットが切り替わるため、アセットは切り替え後のターゲット用にインポートされるというからくりです。

*手元でAndroidに切り替えたら、Build設定でColor SpaceをGammaにする必要がありました。

f:id:sugar_affordance:20170201162420p:plain


Unityの設定で回避できるようになりませんかね。(ボソッ

Amazon.co.jpアソシエイト