コード例 #1
0
        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--;
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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;
                    }
                }
            }
        }
コード例 #5
0
 private static void SaveSettingsAsset()
 {
     UnityEditor.EditorUtility.SetDirty(QuickPlayerPrefs.GetSettingsAsset());
 }
コード例 #6
0
        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();
        }
コード例 #7
0
        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--;
        }