コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Build Settings や Project Settings でアクティブではないプラットフォームが選択されている時はビルドをキャンセルするエディタ拡張

ソースコード

using UnityEditor;

[InitializeOnLoad]
public static class Example
{
    private const string TITLE = "ビルド キャンセル";

    private const string MESSAGE = @"Build Settings や Project Settings で
{0} プラットフォームが選択されていたので
ビルドをキャンセルしました";

    static Example()
    {
        BuildPlayerWindow.RegisterBuildPlayerHandler( OnBuild );
    }

    private static void OnBuild( BuildPlayerOptions options )
    {
        var target = options.target;

        if ( EditorUserBuildSettings.activeBuildTarget != target )
        {
            var message = string.Format( MESSAGE, target.ToString() );

            EditorUtility.DisplayDialog( TITLE, message, "OK" );

            return;
        }

        BuildPipeline.BuildPlayer( options );
    }
}

上記のスクリプトを Unity プロジェクトの Editor フォルダに追加します

使用例

f:id:baba_s:20200203232333p:plain

例えば「PC, Mac & Linux Standalone」のプロジェクトをビルドしようとした時に、
「WebGL」が選択された状態になっていると、
WebGL に Switch Platform されてからビルドが始まってしまいます

f:id:baba_s:20200203232345p:plain

前述のスクリプトをプロジェクトに追加すると、
現在アクティブなプラットフォームと違うプラットフォームが選択されていたら
ビルドが始まらないようにすることができます