C#
Unity3D
Unity

Unity5.4からBuildPipeline.BuildPlayerメソッドにEditorBuildSettingsScene[]なオーバーロードが加わった

More than 1 year has passed since last update.

多くの新機能が追加された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);

地味な改良ですが、うれしいですね。