ビルド前処理は 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; } } }