【Unity】ビルドの直前、直後に処理を挟む
Unity5.6からコールバックが用意されています。
using UnityEditor;
using UnityEditor.Build;
public class BuildProcessor : IPreprocessBuild, IPostprocessBuild
{
/// ビルド前処理
public void OnPreprocessBuild(UnityEditor.BuildTarget target, string path)
{
bool isDevelopment = EditorUserBuildSettings.development;
// 開発中。
if(isDevelopment)
{
}
// リリース用。
else
{
// 開発用シーンファイルを外すなど。
}
}
/// ビルド後処理
public void OnPostprocessBuild(BuildTarget target, string path)
{
// ビルド前処理で変更した内容を元に戻すなど。
}
/// 実行順
public int callbackOrder { get { return 0; } }
}
リリース時に不要な機能を削除したり、データの整合性チェックとか入れると良さそうです。
※追記 2019.1 辺りから IPreprocessBuild, IPostprocessBuild が非推奨に
代わりに IPreprocessBuildWithReport、IPostprocessBuildWithReport を使う様になりました。
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
public class BuildProcessor : IPreprocessBuildWithReport, IPostprocessBuildWithReport
{
/// ビルド前処理
public void OnPreprocessBuild(BuildReport _report)
{
if(isDevelopment(_report))
{
}
}
/// ビルド後処理
public void OnPostprocessBuild(BuildReport _report)
{
if (isDevelopment(_report))
{
}
}
// 開発モードか?
private bool isDevelopment(BuildReport report)
{
return (report.summary.options & BuildOptions.Development) != 0;
}
/// 実行順
public int callbackOrder { get { return 0; } }
}
古い interface はいずれ削除されるでしょうし、新しい方を使う様にしましょう。