UnityEditor2018 ビルドスクリプト

Editorフォルダをとスクリプトファイルの作成

Step1
Assetsフォルダ内にEditorフォルダを作成します。
f:id:MATCHA05:20180616132801p:plain
Step2
作成したフォルダ内にスクリプトファイルを作成します。
f:id:MATCHA05:20180616133506p:plain

なぜこの手順を行ったかというと、
Editorフォルダ内のファイルはエディタースクリプトとして扱われるので、
ビルドしたゲーム内にエディタースクリプトが含まれなくなります。

作成したスクリプトファイルにビルドスクリプトを実装

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

public class MatchaBlogBuild
{
    private static readonly string OUTPUT_BASE_PATH = Directory.GetCurrentDirectory() + @"\Output\";

    [MenuItem("MatchaBlog/WindowsBuilds")]
    public static void WindowsStandaloneBuild()
    {
        BuildReport report = BuildPipeline.BuildPlayer(GetScenesPaths(), OUTPUT_BASE_PATH + @"\MatchaBlog.exe", BuildTarget.StandaloneWindows, BuildOptions.None);

        if (report.summary.result == BuildResult.Succeeded)
        {
            Debug.Log("======== Build Done! ========");
        }
        else if (report.summary.result == BuildResult.Failed)
        {
            foreach (var step in report.steps)
            {
                Debug.Log(step.messages);
            }
        }
    }

    private static string[] GetScenesPaths()
    {
        string[] scenes = new string[EditorBuildSettings.scenes.Length];
        for (int i = 0; i < scenes.Length; i++)
        {
            scenes[i] = EditorBuildSettings.scenes[i].path;
        }
        return scenes;
    }
}

ビルドを実行する

UnityEditor上部のメニューから、Matchablog>WindowsBuildsメニューが作成されているので、クリックするとビルド処理が実行されます。

まとめ

BuildPipeline.BuildPlayerの処理の前と後に処理を追加することで、
ビルド前イベントとビルド後イベントを実現することができる

/*
ビルド前イベント
*/
  BuildReport report = BuildPipeline.BuildPlayer(GetScenesPaths(), OUTPUT_BASE_PATH + @"\MatchaBlog.exe", BuildTarget.StandaloneWindows, BuildOptions.None);
/*
ビルド後イベント
*/

古いバージョンではBuildPipeline.BuildPlayerの戻り値がstring[]なので、
古いバージョンで実装する場合は注意