はじめに
今回はIPreprocessBuildWithReport
とIPostprocessBuildWithReport
を使ってビルド前後に処理を挟んでみるという記事になります。
使い方
public class CustomBuildProcessor : IPreprocessBuildWithReport, IPostprocessBuildWithReport { // 複数コールバックがある場合に呼ばれる順番の設定ができる(低い方が優先) public int callbackOrder => 0; /// <summary> /// ビルド完了後に実行される /// </summary> /// <param name="report">ターゲットプラットフォームや出力パスなど、ビルドに関する情報を含むBuildReport</param> public void OnPostprocessBuild(BuildReport report) { Debug.Log("ビルドされた後に呼ばれる"); } /// <summary> /// ビルド開始前に呼ばれる /// </summary> /// <param name="report">ターゲットプラットフォームや出力パスなど、ビルドに関する情報を含むBuildReport</param> public void OnPreprocessBuild(BuildReport report) { Debug.Log("ビルドされる前に呼ばれる"); } }
インターフェイスを実装するだけなのでそこまで難しいことはないですね。
またBuildReport
はビルドに関する情報が含まれており、いろいろな使い方ができそうです。
docs.unity3d.com
public void OnPostprocessBuild(BuildReport report) { BuildTarget buildTarget = report.summary.platform; DateTime buildStartedAt = report.summary.buildStartedAt; DateTime buildEndedAt = report.summary.buildEndedAt; Debug.Log("Build Time : " + (buildEndedAt - buildStartedAt)); Debug.Log("Build Time : " + report.summary.totalTime); Debug.Log("Output Path : " + report.summary.outputPath); BuildResult result = report.summary.result; switch (result) { case BuildResult.Cancelled: Debug.Log("Cancelled"); break; case BuildResult.Failed: Debug.Log("Failed"); break; case BuildResult.Succeeded: Debug.Log("Succeeded"); break; case BuildResult.Unknown: break; } }