環境
Unity5.3.2f1で確認
前書き
プロジェクトの進行がゴタゴタしてくると
「このビルドほんとにこの設定で出力したヤツ? ってか何時の?」
「いやちょっとわかんないっす」
みたいなやり取りが発生して辛かった記憶があるので幸せになる為の方法を調べました。
デバッグ用のスクリーンショットを出力する時にでも一緒に表示させておくとデバッグが楽になると思います。
やりたいこと
- ビルド時のタイムスタンプとシンボル定義をコードから参照出来る形で生成する
サンプル
BuildInfoGenerator.cs
using UnityEditor;
using System.IO;
public class BuildInfoGenerator {
const string TEMPLETE = @"
public class BuildInfo {{
public const string BUILD_SYMBOLS = ""{0}"";
public const string BUILD_TIMESTAMP = ""{1}"";
}}
";
[MenuItem("Tool/MakeBuildInfo")]
public static void MakeBuildInfo() {
File.WriteAllText(
"Assets/BuildInfo.cs",
string.Format(TEMPLETE, new string[] {
PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone),
System.DateTime.Now.ToString("yyMMdd_HHmm")
}));
}
}
上記のスクリプトをメニューから実行すると以下のようなスクリプトが生成されるので、これをアプリ側から参照して画面に表示するなどします。
BuildInfo.cs
public class BuildInfo {
public const string BUILD_SYMBOLS = "TEST1;TEST2";
public const string BUILD_TIMESTAMP = "160218_1812";
}
※Unityにはビルド前のフックが存在しないので、ビルドのパターンを定義して一発で出力すると組み合わせて使用します。
あとがき
- ビルドのパターンを定義して一発で出力すると組み合わせずに使用する場合はビルド前にMakeBuildInfoを手動で実行する必要がありますが大抵忘れます。