/// <summary> /// 新しいSymbolCatalogアセットを生成します. /// Create new SymbolCatalog asset. /// </summary> static SymbolCatalog CreateCatalog() { if (!Directory.Exists("Assets/Editor")) { AssetDatabase.CreateFolder("Assets", "Editor"); } //DefineSymbolsアセット生成して保存. SymbolCatalog catalog = ScriptableObject.CreateInstance(typeof(SymbolCatalog)) as SymbolCatalog; AssetDatabase.CreateAsset(catalog, "Assets/Editor/" + typeof(SymbolCatalog).Name + ".asset"); AssetDatabase.SaveAssets(); return(catalog); }
/// <summary> /// GUIを表示します. /// Draw GUI. /// </summary> void OnGUI() { Initialize(); // カタログアセットを取得/作成します. // Get/Create catalog asset. catalog = catalog ?? AssetDatabase.FindAssets("t:" + typeof(SymbolCatalog).Name) .Select(x => AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(x), typeof(SymbolCatalog)) as SymbolCatalog) .FirstOrDefault() ?? CreateCatalog(); // 変更チェック.PlayerSettingsなどで直接変えた場合も検知します. // Sync script define symbol. string define = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); if (currentDefine != define) { currentDefine = define; catalog.Revert(); } using (var svs = new EditorGUILayout.ScrollViewScope(scrollPosition)) { scrollPosition = svs.scrollPosition; EditorGUI.BeginChangeCheck(); // タイトル // Title GUILayout.Label(new GUIContent(" Available Scripting Define Symbols", EditorGUIUtility.ObjectContent(catalog, typeof(SymbolCatalog)).image), styleTitle); // シンボルリスト. // Draw all symbols in catalog. ro.list = catalog.list; ro.DoLayoutList(); // Applyボタン. // Button to apply scripting define symbols. using (new EditorGUI.DisabledGroupScope(EditorApplication.isCompiling)) { using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox)) { GUILayout.Label(new GUIContent("Apply To", EditorGUIUtility.FindTexture("vcs_check"))); if (GUILayout.Button("All Targets")) { catalog.Apply(); } if (GUILayout.Button(string.Format("Current ({0})", EditorUserBuildSettings.selectedBuildTargetGroup))) { catalog.Apply(EditorUserBuildSettings.selectedBuildTargetGroup); } } } if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(catalog); } } // コンパイル中. // Request repain during compiling. if (EditorApplication.isCompiling) { Repaint(); } // Addされたら自動でシンボル名の入力開始します. // When add new symbol, focus input field. if (!string.IsNullOrEmpty(focus)) { EditorGUI.FocusTextInControl(focus); focus = null; } }