using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; namespace Fungus { namespace EditorUtils { /// /// Shows Fungus section in the Edit->Preferences in unity allows you to configure Fungus behaviour /// /// ref https://docs.unity3d.com/ScriptReference/PreferenceItem.html /// [InitializeOnLoad] public static class FungusEditorPreferences { // Have we loaded the prefs yet private static bool prefsLoaded = false; const string HIDE_MUSH_KEY = "hideMushroomInHierarchy"; const string USE_EXP_MENUS = "useExperimentalMenus"; public static bool hideMushroomInHierarchy; public static bool useExperimentalMenus; static FungusEditorPreferences() { LoadOnScriptLoad(); } // Add preferences section named "My Preferences" to the Preferences Window [PreferenceItem("Fungus")] public static void PreferencesGUI() { // Load the preferences if (!prefsLoaded) { LoadOnScriptLoad(); } // Preferences GUI hideMushroomInHierarchy = EditorGUILayout.Toggle("Hide Mushroom Flowchart Icon", hideMushroomInHierarchy); useExperimentalMenus = EditorGUILayout.Toggle(new GUIContent("Experimental Searchable Menus", "Experimental menus replace the Event, Add Variable and Add Command menus with a searchable menu more like the Unity AddComponent menu."), useExperimentalMenus); // Save the preferences if (GUI.changed) { EditorPrefs.SetBool(HIDE_MUSH_KEY, hideMushroomInHierarchy); EditorPrefs.SetBool(USE_EXP_MENUS, useExperimentalMenus); } } public static void LoadOnScriptLoad() { hideMushroomInHierarchy = EditorPrefs.GetBool(HIDE_MUSH_KEY, false); useExperimentalMenus = EditorPrefs.GetBool(USE_EXP_MENUS, false); prefsLoaded = true; } } } }