4
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?