ビルド前処理は IPreprocessBuildWithReport 、ビルド後処理は IPostprocessBuildWithReport を実装する。
作成したファイルを Editor フォルダに入れる。
public class BuildProcessor : IPreprocessBuildWithReport, IPostprocessBuildWithReport { // 実行される順番 public int callbackOrder => 0; // ビルド前処理 public void OnPreprocessBuild(BuildReport report) { } // ビルド後処理 public void OnPostprocessBuild(BuildReport report) { } }
ビルド前に外部の exe ファイルを実行する
ビルド前に外部の exe ファイルを実行する場合の実装例。
Process.Start の引数の fileName は相対パスでも大丈夫だが、ProcessInfo を使う場合は、ファイル名単体かフルパスじゃないと動かない。
Arguments でパスを使用する場合は、CurrentDirectory = Unity プロジェクトのルートフォルダからの相対パスが使える。
public void OnPreprocessBuild(BuildReport report) { var info = new ProcessStartInfo(); info.FileName = "cmd.exe"; info.Arguments = $"/c cd"; info.WorkingDirectory = Environment.CurrentDirectory; info.WindowStyle = ProcessWindowStyle.Hidden; info.UseShellExecute = false; info.RedirectStandardOutput = true; Process process = null; try { process = Process.Start(info); Debug.Log(process.StandardOutput.ReadToEnd()); process.WaitForExit(); } catch(Exception e) { throw new BuildFailedException(e); } finally { if (process != null) { if (!process.HasExited) { process.Kill(); } process.Dispose(); process = null; } } }