Scripting Define Symbols を管理しやすくする Editor 機能

こちらの記事は内容が古くなっています。最新の記事をご覧ください。

Project Settings - Player にある Scripting Define Symbols は、デバッグの有無や開発ターゲットの変更など、ちょくちょく設定することがあります。

この値はプログラムの #if 識別子と連動し、コンパイル結果に変化をつけられます。

#if UNITY_EDITOR && ASSETBUNDLE_SIMULATOR
		string[] levelPaths = UnityEditor.AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(bundledir, scenename);
		
		LoadSceneParameters param = new LoadSceneParameters();
		param.loadSceneMode       = ascene.Mode;
		param.localPhysicsMode    = LocalPhysicsMode.Physics3D;
		UnityEditor.SceneManagement.EditorSceneManager.LoadSceneAsyncInPlayMode(levelPaths[0], param);
		yield return null;
#else
		yield return loadBundleCoroutine(scenename);

		SceneManager.LoadSceneAsync(scenename, ascene.Mode);
#endif

が、毎回手動で追加 / 削除をするのにつかれました…。
ミスタイプすれば機能しないので、「あれ?」となることも多いです。
そこで楽をするための Editor 機能を作ってみました。

ソースコード

以下をダウンロード&解凍し、DefineSymbols.csEditor/ の下に配置してください。

使い方

Tools - Define Symbols を選択すると以下のウィンドウが開きます。
初回は Scripting Define Symbols に登録されたものが自動的に追加されています。

初回以降は、DefineSymbols.json というファイルに内容が保存されるので、Scripting Define Symbols を手で変更したとしても、その内容は残ります。

  1. 項目を追加
  2. Scripting Define Symbols に登録するワード
  3. 基本は Unknown。ビルドによって変更したい場合はそのビルドターゲットにする。例えば Windows ビルドだけ有効にする場合 Standalone を選ぶ
  4. 自分が覚えておくための説明書き。書かなくても OK
  5. チェックを入れるとキーワードを登録、チェックを外しておくと一旦登録対象から外れる