多くの新機能が追加されたUnity5.4。待ちに待ったUnity5.4。
そんなUnity5.4では、BuildPipelineクラスのBuildPlayerメソッドに、EditorBuildSettingsSceneの配列を引数にとるものが追加さました。
apkやXcode Projectなどのビルド成果物を生成するBuildPipelineクラスのBuildPlayerメソッドは、Unity5.4以前では、次のように書く必要がありました。
// ビルド対象シーンのパスの配列
string[] scenes = EditorBuildSettings
.scenes
.Where(it => it.enabled)
.Select(it => it.path)
.ToArray();
// 先のビルド対象シーンのパスの配列を引数にとるBuildPipeline.BuildPlayerメソッド
string errorMessage = BuildPipeline.BuildPlayer(
levels: scenes,
locationPathName: outputPath,
target: BuildTarget.Android,
options: BuildOptions.None);
BuildPipeline.BuildPlayerには、ビルド対象のシーンのパス
を渡す必要がありました。EditorBuildSettings.scenesプロパティは、EditorBuildSettingsSceneの配列型なので、それをパスに変換する必要がありました。普通にEditorBuildSettingsSceneの配列を渡したくないですか?
Unity5.4からBuildPipeline.BuildPlayerメソッドにEditorBuildSettingsScene[]なオーバーロードが加わったので、次のように記述することができます。
// ビルド対象シーンの配列
EditorBuildSettingsScene[] scenes = EditorBuildSettings
.scenes
.Where(it => it.enabled)
.ToArray();
// 先のビルド対象シーンの配列を引数にとるBuildPipeline.BuildPlayerメソッド
string errorMessage = BuildPipeline.BuildPlayer(
levels: scenes,
locationPathName: outputPath,
target: BuildTarget.Android,
options: BuildOptions.None);
地味な改良ですが、うれしいですね。