いんでぃーづ

ゲームいろいろ、いろいろ自由

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の設定で回避できるようになりませんかね。(ボソッ


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。