【Unity】ビルドの前後に処理を挟み込む方法

Unityでビルドの前後に処理を挟み込む方法についてまとめました。

Unity2020.1.10

ビルド前後の処理を行う

ビルド前後の処理を行うにはIPreprocessBuildWithReportIPostprocessBuildWithReportを実装したクラスを作ります。

using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;

public class Example : IPreprocessBuildWithReport, IPostprocessBuildWithReport
{
    // この値が小さいものほど早く処理される
    public int callbackOrder => 1;

    public void OnPreprocessBuild(BuildReport report)
    {
        Debug.Log("ビルドを開始します。");
    }
    
    public void OnPostprocessBuild(BuildReport report)
    {
        Debug.Log("ビルドが完了しました。");
    }
}

ちなみにIPreprocessBuildIPostprocessBuildといったインターフェースもありますがこれらはObsoleteです。

ビルドボタンを押したときの処理を行う

また、BuildPlayerWindow.RegisterBuildPlayerHandlerを使うとBuild Settingsウィンドウからのビルドボタンの押下をフックすることができます。

using UnityEditor;
using UnityEngine;

public class Example
{
    [InitializeOnLoadMethod]
    private static void Initialize()
    {
        // ビルドボタンの押下をフック
        BuildPlayerWindow.RegisterBuildPlayerHandler(BuildPlayerHandler);
    }
 
    private static void BuildPlayerHandler(BuildPlayerOptions options)
    {
        Debug.Log("ビルドボタンが押されました。");
    }
}

参考

docs.unity3d.com