protected virtual void DrawSettings(bool isBase) { List <QuickSetting> settings = isBase ? QuickPlayerPrefs.GetSettingsBase() : QuickPlayerPrefs.GetSettingsCustom(); if (settings.Count == 0) { return; } EditorGUI.indentLevel++; //Draw the "Name Value" column GUILayout.BeginVertical(); EditorGUILayout.LabelField("Name", "Value"); foreach (QuickSetting s in settings) { GUILayout.BeginHorizontal(); string key = s.GetKey(); string typeName = s.GetTypeName(); QuickPlayerPrefs.SetValue(key, DrawPlayerPref(key, typeName)); if (!isBase) { if (QuickBaseEditor.DrawButton("-", GUILayout.Width(32))) { QuickPlayerPrefs.DeleteSetting(key); break; } } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); EditorGUI.indentLevel--; }
protected virtual object DrawPlayerPref(string key, string typeName) { System.Type t = System.Type.GetType(typeName); GUILayoutOption[] options = { GUILayout.Width(256) }; if (t == typeof(int)) { return(EditorGUILayout.IntField(key, QuickPlayerPrefs.GetInt(key), options)); } if (t == typeof(float)) { return(EditorGUILayout.FloatField(key, QuickPlayerPrefs.GetFloat(key), options)); } if (t == typeof(bool)) { return(EditorGUILayout.Toggle(key, QuickPlayerPrefs.GetBool(key), options)); } if (t != null && t.IsEnum) { string[] enumValues = System.Enum.GetNames(t); string value = QuickPlayerPrefs.GetString(key); int i = 0; for (; i < enumValues.Length; i++) { if (enumValues[i] == value) { break; } } if (i == enumValues.Length) { i = 0; } return(System.Enum.Parse(t, enumValues[EditorGUILayout.Popup(key, i, enumValues, options)])); } return(EditorGUILayout.TextField(key, QuickPlayerPrefs.GetString(key), options)); }
private static void GetWindowPlayerPrefs() { EditorWindow.GetWindow <QuickPlayerPrefsWindowEditor>(); string path = "Assets/QuickVRCfg/Resources/QuickSettingsCustom.asset"; QuickSettingsAsset settings = AssetDatabase.LoadAssetAtPath <QuickSettingsAsset>(path); if (!settings) { settings = ScriptableObject.CreateInstance <QuickSettingsAsset>(); QuickUtilsEditor.CreateDataFolder("QuickVRCfg/Resources"); AssetDatabase.CreateAsset(settings, path); AssetDatabase.SaveAssets(); } QuickPlayerPrefs.Init(); //Check if the base settings are defined SettingsBase.SetSubjectID(SettingsBase.GetSubjectID()); SettingsBase.SetGender(SettingsBase.GetGender()); SettingsBase.SetLanguage(SettingsBase.GetLanguage()); }
protected virtual void DrawNewSettingsArea(GUILayoutOption[] options) { _showNewSetting = EditorGUILayout.Foldout(_showNewSetting, "New Setting"); if (_showNewSetting) { EditorGUI.indentLevel++; _newSettingKey = EditorGUILayout.TextField("Key: ", _newSettingKey, options); _newSettingType = (PrefType)EditorGUILayout.EnumPopup("Type: ", _newSettingType, options); if (_newSettingType == PrefType.Enum) { _newSettingTypeEnum = EditorGUILayout.TextField("Enum Type: ", _newSettingTypeEnum, options); } EditorGUI.indentLevel--; if (QuickBaseEditor.DrawButton("Create New Setting", options)) { object value = null; if (_newSettingKey.Length == 0) { EditorUtility.DisplayDialog("New Setting Creation Error", "The Key string cannot be empty", "Ok"); } else if (QuickPlayerPrefs.HasKey(_newSettingKey)) { EditorUtility.DisplayDialog("New Setting Creation Error", "The Key " + _newSettingKey + " already exists", "Ok"); } else if (CreateNewSetting(out value)) { QuickPlayerPrefs.SetValue(_newSettingKey, value); _newSettingKey = _newSettingTypeEnum = ""; _newSettingType = PrefType.String; } } } }
private static void SaveSettingsAsset() { UnityEditor.EditorUtility.SetDirty(QuickPlayerPrefs.GetSettingsAsset()); }
protected virtual void OnGUI() { if (!QuickPlayerPrefs.GetSettingsAsset()) { QuickPlayerPrefs.Init(); } _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos); titleContent.text = "PlayerPrefs"; GUILayoutOption[] options = { GUILayout.Width(256) }; EditorGUILayout.BeginVertical("box"); DrawNewSettingsArea(options); EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical("box"); _showBaseSettings = EditorGUILayout.Foldout(_showBaseSettings, "Base Settings"); if (_showBaseSettings) { DrawSettings(true); } EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical("box"); _showCustomSettings = EditorGUILayout.Foldout(_showCustomSettings, "Custom Settings"); if (_showCustomSettings) { DrawSettings(false); } EditorGUILayout.EndVertical(); //if (QuickBaseEditor.DrawButton("Clear Custom Settings", options)) //{ // if (EditorUtility.DisplayDialog("Clear Custom Settings", "This will remove all the defined Custom Settings. Are you sure?", "Yes", "No")) // { // QuickPlayerPrefs.ClearSettingsCustom(); // } //} //QuickBaseEditor.DrawHorizontalLine(); EditorGUILayout.BeginVertical("box"); _customSettingsScriptName = EditorGUILayout.TextField("Custom Settings Script: ", _customSettingsScriptName, options); List <QuickSetting> customSettings = QuickPlayerPrefs.GetSettingsCustom(); List <string> keys = new List <string>(); foreach (QuickSetting s in customSettings) { keys.Add(s.GetKey()); } if (QuickBaseEditor.DrawButton("Create Custom Settings Script", options)) { CreateSettingsScript(_customSettingsScriptName, keys); } EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); }
protected virtual void WriteGettersAndSetters(List <string> keys, IndentedTextWriter outFile) { outFile.Indent++; outFile.WriteLine("#region GET AND SET"); outFile.WriteLine(); foreach (string k in keys) { System.Type type = System.Type.GetType(QuickPlayerPrefs.GetSetting(k).GetTypeName()); if (type == null) { type = typeof(string); } string typeName; if (type == typeof(string)) { typeName = "string"; } else if (type == typeof(int)) { typeName = "int"; } else if (type == typeof(float)) { typeName = "float"; } else if (type == typeof(bool)) { typeName = "bool"; } else { typeName = QuickUtils.GetTypeFullName(type); } //The getter outFile.WriteLine("public static " + typeName + " Get" + k + "()"); outFile.WriteLine("{"); outFile.Indent++; if (type == typeof(string)) { outFile.WriteLine("return QuickPlayerPrefs.GetString(\"" + k + "\");"); } else if (type == typeof(int)) { outFile.WriteLine("return QuickPlayerPrefs.GetInt(\"" + k + "\");"); } else if (type == typeof(float)) { outFile.WriteLine("return QuickPlayerPrefs.GetFloat(\"" + k + "\");"); } else if (type == typeof(bool)) { outFile.WriteLine("return QuickPlayerPrefs.GetBool(\"" + k + "\");"); } else if (type.IsEnum) { outFile.WriteLine("return QuickPlayerPrefs.GetEnum<" + typeName + ">(\"" + k + "\");"); } outFile.Indent--; outFile.WriteLine("}"); outFile.WriteLine(); //The setter outFile.WriteLine("public static void Set" + k + "(" + typeName + " value)"); outFile.WriteLine("{"); outFile.Indent++; outFile.WriteLine("QuickPlayerPrefs.SetValue(\"" + k + "\", value);"); outFile.Indent--; outFile.WriteLine("}"); outFile.WriteLine(); } outFile.WriteLine("#endregion"); outFile.Indent--; }