いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU

Unity : デバッグ用のシーンを挟み込んでビルドする

{スポンサーリンク}
{スポンサーリンク}

端末でのデバッグ中に、各種パラメータ値を書き換えられるデバッグ用シーンを入れてビルドしてテストしたりすると思いますが、リリースしたいときにBuild Settings からシーン外したりするの手間なので、メニューから一発でやる方法を考えました。

やりかた

エディタスクリプトEditorBuildSettings.scenes を参照すると、現在のビルド対象シーンの配列が取得できます。

自分の場合は起動シーンをデバッグ用シーンにしたかったので、この配列の先頭に該当シーンを EditorBuildSettingsScene 型で用意して挿入してやり、BuildPipeline.BuildPlayer 関数を呼んでビルドしてやります。

スクリプトを準備

using UnityEditor;
using UnityEditor.Callbacks;
using System;

public class DebugBuilder {
    [MenuItem("File/DebugBuild")]
    static void DebugBuild() {

        EditorBuildSettingsScene[] buildSceneSettings = new EditorBuildSettingsScene[EditorBuildSettings.scenes.Length];
        Array.Copy (EditorBuildSettings.scenes, buildSceneSettings, EditorBuildSettings.scenes.Length);

        // シーンを先頭に追加
        ArrayUtility.Insert (
            ref buildSceneSettings, 0, new EditorBuildSettingsScene ("Assets/Scenes/Debug.unity", true));

        // ビルド実行
        BuildPipeline.BuildPlayer (
            buildSceneSettings,
            "ビルド先ファイルのパス",
            BuildTarget.StandaloneOSXIntel64,   // プラットフォーム
            BuildOptions.Development
        );

    }

}

上記のスクリプトEditor ディレクトリに用意すると、Unityメニューの File の下に DebugBuild が出現するので、クリックするとビルドされます。

・注意

SceneManager.LoadScene の引数を int のインデックス指定で使用している場合破綻するので、やりたい場合は文字列指定で呼びましょう。

Amazon.co.jpアソシエイト