コガネブログ

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

【Unity】Windows ビルドした時に Steamworks.NET.txt を自動で削除するエディタ拡張

ソースコード

using System.IO;
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;

public sealed class SteamworksNetTxtDeleter : IPostprocessBuildWithReport
{
    public int callbackOrder => 0;

    public void OnPostprocessBuild( BuildReport report )
    {
        var summary  = report.summary;
        var platform = summary.platform;

        if ( platform != BuildTarget.StandaloneWindows &&
             platform != BuildTarget.StandaloneWindows64 )
        {
            return;
        }

        if ( summary.options.HasFlag( BuildOptions.Development ) ) return;

        var outputPath           = summary.outputPath;
        var outputDirectoryPath  = Path.GetDirectoryName( outputPath );
        var productName          = PlayerSettings.productName;
        var steamworksNetTxtPath = $"{outputDirectoryPath}/{productName}_Data/Plugins/Steamworks.NET.txt";

        // RedistCopy.OnPostprocessBuild で生成される Steamworks.NET.txt を削除するためには
        // PostProcessBuildAttribute を使う場合は callbackOrder に大きな値を設定する
        // IPostprocessBuildWithReport を使う場合は EditorApplication.delayCall で 1 フレーム待つ
        EditorApplication.delayCall += () =>
        {
            if ( !File.Exists( steamworksNetTxtPath ) ) return;

            File.Delete( steamworksNetTxtPath );
        };
    }
}