【Unity】ビルドの直前、直後に処理を挟む

2020/01/14DEVELOP, 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 はいずれ削除されるでしょうし、新しい方を使う様にしましょう。

Posted by kazupon