概要
using System; using UnityEditor; using UnityEngine; /// <summary> /// #define で定義されているシンボルを一覧で表示するウィンドウを管理するクラス /// </summary> public sealed class SymbolListWindow : EditorWindow { private Vector2 mScrollPos; // スクロールの座標 /// <summary> /// ウィンドウを開きます /// </summary> [MenuItem("Tools/Open/Symbol List Window")] private static void Open() { GetWindow<SymbolListWindow>("Symbol List"); } /// <summary> /// GUI を表示します /// </summary> private void OnGUI() { // スクロールビューの表示を開始します mScrollPos = EditorGUILayout.BeginScrollView(mScrollPos, GUILayout.Height(position.height)); // 定義されているシンボルを取得します var defines = EditorUserBuildSettings.activeScriptCompilationDefines; // 取得したシンボルを名前順でソートします Array.Sort(defines); // 定義されているシンボルの一覧を表示します foreach (var define in defines) { EditorGUILayout.BeginHorizontal(GUILayout.Height(20)); // Copy ボタンが押された場合 if (GUILayout.Button("Copy", GUILayout.Width(50), GUILayout.Height(20))) { // クリップボードにシンボル名を登録します EditorGUIUtility.systemCopyBuffer = define; } // 選択可能なラベルを使用してシンボル名を表示します EditorGUILayout.SelectableLabel(define, GUILayout.Height(20)); EditorGUILayout.EndHorizontal(); } // スクロールビューの表示を終了します EditorGUILayout.EndScrollView(); } }
上記のスクリプトをUnityのプロジェクトのEditorフォルダに
「SymbolListWindow.cs」という名前で保存した後に
Unityエディタのメニューの「Tools>Open>Symbol List Window」を実行すると
このようなウィンドウが表示されて
defineで定義されているシンボルを一覧で確認することができます
(Unityが定義しているシンボルも自分で定義したシンボルもすべて表示されます)
Copyボタンを押すか文字列を選択してコピーすることで
クリップボードにシンボル名を保存することもできます
なので、下記のようにシンボルが定義されているかどうかで処理を分岐させたい時に
少しだけコーディングの手間を省くことができます
#if UNITY_EDITOR // ... #else // ... #endif