UnityEditor2018 ビルドスクリプト
Editorフォルダをとスクリプトファイルの作成
Step1
Assetsフォルダ内にEditorフォルダを作成します。
Step2
作成したフォルダ内にスクリプトファイルを作成します。
なぜこの手順を行ったかというと、
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[]なので、
古いバージョンで実装する場合は注意