private string GetValue(string key, PlayerPrefsValueType type)
    {
        if (!PlayerPrefs.HasKey(key))
        {
            throw new ArgumentException("Key didn't exist in PlayerPrefs");
        }
        switch (type)
        {
        case PlayerPrefsValueType.String:
        {
            return(PlayerPrefs.GetString(key));
        }

        case PlayerPrefsValueType.Float:
        {
            return(PlayerPrefs.GetFloat(key).ToString());
        }

        case PlayerPrefsValueType.Int:
        {
            return(PlayerPrefs.GetInt(key).ToString());
        }

        default:
        {
            throw new ArgumentOutOfRangeException("Unknown Type");
        }
        }
    }
示例#2
0
    /// <summary>
    /// Get type for a key that exists in PlayerPrefs. If the key's value is default value, the type cannot be determined.
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    private static PlayerPrefsValueType GetType(string key)
    {
        if (!PlayerPrefs.HasKey(key))
        {
            throw new ArgumentException("Key didn't exist in PlayerPrefs");
        }
        PlayerPrefsValueType type = PlayerPrefsValueType.Unknown;

        float  floatVal  = PlayerPrefs.GetFloat(key);
        int    intVal    = PlayerPrefs.GetInt(key);
        string stringVal = PlayerPrefs.GetString(key);

        if (floatVal == (default(float)) && intVal == (default(int)) && !stringVal.Equals(string.Empty))
        {
            type = PlayerPrefsValueType.String;
        }
        else if (floatVal == (default(float)) && intVal != (default(int)) && stringVal.Equals(string.Empty))
        {
            type = PlayerPrefsValueType.Int;
        }
        else if (floatVal != (default(float)) && intVal == (default(int)) && stringVal.Equals(string.Empty))
        {
            type = PlayerPrefsValueType.Float;
        }
        return(type);
    }
        /// <summary>
        ///     Tries to set the value to player prefs. If the value is successfully set, PlayerPrefs are saved.
        /// </summary>
        /// <param name="key">Key of value</param>
        /// <param name="value">Value for the key</param>
        /// <param name="type">
        ///     Type of the value. This determines whether PlayerPrefs.SetString(), PlayerPrefs.SetFloat(), or
        ///     PlayerPrefs.SetInt() is used.
        /// </param>
        /// <returns>Response containing info telling if the set was successful or not.</returns>
        private static TrySetResponse TrySetValue(string key, string value, PlayerPrefsValueType type)
        {
            var respone = new TrySetResponse
            {
                Message     = "Key: " + key + " with Value: " + value + " was successfully saved to PlayerPrefs as a " + type,
                Success     = true,
                MessageType = MessageType.Info
            };

            switch (type)
            {
            case PlayerPrefsValueType.String:
                PlayerPrefs.SetString(key, value);
                PlayerPrefs.Save();
                break;

            case PlayerPrefsValueType.Float:
                float newValFloat;
                if (float.TryParse(value, out newValFloat))
                {
                    PlayerPrefs.SetFloat(key, newValFloat);
                    PlayerPrefs.Save();
                }
                else
                {
                    respone.SetValues(
                        "Couldn't parse input value:" + value + " to target type float. Input a valid float value.",
                        false, MessageType.Error);
                }

                break;

            case PlayerPrefsValueType.Int:
                int newValInt;
                if (int.TryParse(value, out newValInt))
                {
                    PlayerPrefs.SetInt(key, newValInt);
                    PlayerPrefs.Save();
                }
                else
                {
                    respone.SetValues(
                        "Couldn't parse input value:" + value + " to target type int. Input a valid int value.", false,
                        MessageType.Error);
                }

                break;

            default:
                respone.SetValues("Unknown PlayerPrefsValueType: " + type, false, MessageType.Error);
                break;
            }

            return(respone);
        }
示例#4
0
 /// <summary>
 /// Draw add key controls
 /// </summary>
 private void DrawAddKey()
 {
     GUILayout.Label("Add key", EditorStyles.boldLabel);
     addKey_m     = EditorGUILayout.TextField("Key", addKey_m);
     addVal_m     = EditorGUILayout.TextField("Value", addVal_m);
     addValType_m = (PlayerPrefsValueType)EditorGUILayout.EnumPopup("Type", addValType_m);
     if (GUILayout.Button("Add"))
     {
         addResponse_m = TrySetValue(addKey_m, addVal_m, addValType_m);
     }
     if (addResponse_m != null)
     {
         EditorGUILayout.HelpBox(addResponse_m.Message, addResponse_m.MessageType);
     }
 }
 /// <summary>
 ///     Draw add key controls
 /// </summary>
 private void DrawAddKey()
 {
     GUILayout.Label("Add key", EditorStyles.boldLabel);
     _addKeyM     = EditorGUILayout.TextField("Key", _addKeyM);
     _addValM     = EditorGUILayout.TextField("Value", _addValM);
     _addValTypeM = (PlayerPrefsValueType)EditorGUILayout.EnumPopup("Type", _addValTypeM);
     if (GUILayout.Button("Add"))
     {
         _addResponseM = TrySetValue(_addKeyM, _addValM, _addValTypeM);
     }
     if (_addResponseM != null)
     {
         EditorGUILayout.HelpBox(_addResponseM.Message, _addResponseM.MessageType);
     }
 }
    private void DrawSearchKey()
    {
        GUILayout.Label("Search for key", EditorStyles.boldLabel);
        searchKey = EditorGUILayout.TextField("Key", searchKey);

        //Edit existing key
        if (PlayerPrefs.HasKey(searchKey))
        {
            PlayerPrefsValueType type = GetType(searchKey);

            // Delete
            if (GUILayout.Button("Delete"))
            {
                PlayerPrefs.DeleteKey(searchKey);
                Debug.Log("PlayerPrefs key: " + searchKey + ", deleted");
            }

            if (type == PlayerPrefsValueType.Unknown)
            {
                searchValType_m = (PlayerPrefsValueType)EditorGUILayout.EnumPopup("Type", searchValType_m);
                EditorGUILayout.HelpBox("The value for the key is a default value so the type cannot be determined. It is your responsibility to set the value in correct type.", MessageType.Warning);
            }
            else
            {
                searchValType_m = type;
                GUILayout.Label("Value type: " + searchValType_m, EditorStyles.boldLabel);
                GUILayout.Label("Current value: " + GetValue(searchKey, searchValType_m), EditorStyles.boldLabel);
            }

            // Set value
            GUILayout.Label("Set new value", EditorStyles.boldLabel);
            searchNewValue = EditorGUILayout.TextField("New value", searchNewValue);


            if (GUILayout.Button("Set"))
            {
                searchResponse = TrySetValue(searchKey, searchNewValue, searchValType_m);
            }
            if (searchResponse != null)
            {
                EditorGUILayout.HelpBox(searchResponse.message, searchResponse.messageType);
            }
        }
        else
        {
            EditorGUILayout.HelpBox("Key doesn't exist in player prefs", MessageType.Warning);
        }
    }
示例#7
0
    /// <summary>
    /// Get existing PlayerPrefs key value as a string.
    /// </summary>
    /// <param name="key">Key of the value</param>
    /// <param name="type">Type of the value</param>
    /// <returns>Value of the key as a string</returns>
    private string GetValue(string key, PlayerPrefsValueType type)
    {
        if (!PlayerPrefs.HasKey(key))
        {
            throw new ArgumentException("Key didn't exist in PlayerPrefs");
        }
        switch (type)
        {
        case PlayerPrefsValueType.String:
            return(PlayerPrefs.GetString(key));

        case PlayerPrefsValueType.Float:
            return(PlayerPrefs.GetFloat(key).ToString(CultureInfo.InvariantCulture));

        case PlayerPrefsValueType.Int:
            return(PlayerPrefs.GetInt(key).ToString(CultureInfo.InvariantCulture));

        default:
            throw new ArgumentOutOfRangeException("type");
        }
    }
 /// <summary>
 /// Tries to set the value to player prefs. If the value is successfully set, PlayerPrefs are saved.
 /// </summary>
 /// <param name="key">Key of value</param>
 /// <param name="value">Value for the key</param>
 /// <param name="type">Type of the value. This determines whether PlayerPrefs.SetString(), PlayerPrefs.SetFloat(), or PlayerPrefs.SetInt() is used.</param>
 /// <returns>Response containing info telling if the set was successful or not.</returns>
 private static TrySetResponse TrySetValue(string key, string value, PlayerPrefsValueType type)
 {
     TrySetResponse respone = new TrySetResponse() {
         message = "Key: " + key + " with Value: " + value + " was successfully saved to PlayerPrefs as a " + type,
         success = true,
         messageType = MessageType.Info
     };
     switch (type) {
         case PlayerPrefsValueType.String:
             PlayerPrefs.SetString(key, value);
             PlayerPrefs.Save();
             break;
         case PlayerPrefsValueType.Float:
             float newValFloat;
             if (float.TryParse(value, out newValFloat)) {
                 PlayerPrefs.SetFloat(key, newValFloat);
                 PlayerPrefs.Save();
             } else {
                 respone.SetValues("Couldn't parse input value:" + value + " to target type float. Input a valid float value.", false, MessageType.Error);
             }
             break;
         case PlayerPrefsValueType.Int:
             int newValInt;
             if (int.TryParse(value, out newValInt)) {
                 PlayerPrefs.SetInt(key, newValInt);
                 PlayerPrefs.Save();
             } else {
                 respone.SetValues("Couldn't parse input value:" + value + " to target type int. Input a valid int value.", false, MessageType.Error);
             }
             break;
         default:
             respone.SetValues("Unknown PlayerPrefsValueType: " + type, false, MessageType.Error);
             break;
     }
     return respone;
 }
    void OnGUI()
    {
        if (string.IsNullOrEmpty(keyStr))
        {
            keyStr = PlayerPrefs.GetString("PlayerPrefsViewer_Last_Input");
        }

        keyStr = EditorGUILayout.TextField("Key", keyStr);
        type   = (PlayerPrefsValueType)EditorGUILayout.EnumPopup("Value Type", type);
        if (PlayerPrefs.HasKey(keyStr))
        {
            switch (type)
            {
            case PlayerPrefsValueType.INT:
                intValue = EditorGUILayout.IntField("Value", intValue);
                if (GUILayout.Button("Get"))
                {
                    intValue = PlayerPrefs.GetInt(keyStr);
                    RememberLastInput(keyStr);
                }
                if (GUILayout.Button("Set"))
                {
                    PlayerPrefs.SetInt(keyStr, intValue);
                    RememberLastInput(keyStr);
                }
                break;

            case PlayerPrefsValueType.FLOAT:
                floatValue = EditorGUILayout.FloatField("Value", floatValue);
                if (GUILayout.Button("Get"))
                {
                    floatValue = PlayerPrefs.GetFloat(keyStr);
                    RememberLastInput(keyStr);
                }
                if (GUILayout.Button("Set"))
                {
                    PlayerPrefs.SetFloat(keyStr, floatValue);
                    RememberLastInput(keyStr);
                }
                break;

            case PlayerPrefsValueType.STRING:
                strValue = EditorGUILayout.TextField("Value", strValue);
                if (GUILayout.Button("Get"))
                {
                    strValue = PlayerPrefs.GetString(keyStr);
                    RememberLastInput(keyStr);
                }
                if (GUILayout.Button("Set"))
                {
                    PlayerPrefs.SetString(keyStr, strValue);
                    RememberLastInput(keyStr);
                }
                break;
            }
            if (GUILayout.Button("Delete"))
            {
                PlayerPrefs.DeleteKey(keyStr);
                RememberLastInput(keyStr);
            }
        }
        else
        {
            switch (type)
            {
            case PlayerPrefsValueType.INT:
                intValue = EditorGUILayout.IntField("Value", intValue);
                if (GUILayout.Button("Add & Set"))
                {
                    PlayerPrefs.SetInt(keyStr, intValue);
                    RememberLastInput(keyStr);
                }
                break;

            case PlayerPrefsValueType.FLOAT:
                floatValue = EditorGUILayout.FloatField("Value", floatValue);
                if (GUILayout.Button("Add & Set"))
                {
                    PlayerPrefs.SetFloat(keyStr, floatValue);
                    RememberLastInput(keyStr);
                }
                break;

            case PlayerPrefsValueType.STRING:
                strValue = EditorGUILayout.TextField("Value", strValue);
                if (GUILayout.Button("Add & Set"))
                {
                    PlayerPrefs.SetString(keyStr, strValue);
                    RememberLastInput(keyStr);
                }
                break;
            }
        }
    }
示例#10
0
 public PlayerPrefsEntry(string key, string value)
 {
     _key   = key;
     _type  = PlayerPrefsValueType.String;
     _value = value;
 }
示例#11
0
 public PlayerPrefsEntry(string key, float value)
 {
     _key   = key;
     _type  = PlayerPrefsValueType.Float;
     _value = value;
 }
示例#12
0
 public PlayerPrefsEntry(string key, int value)
 {
     _key   = key;
     _type  = PlayerPrefsValueType.Int;
     _value = value;
 }
 /// <summary>
 /// Get existing PlayerPrefs key value as a string.
 /// </summary>
 /// <param name="key">Key of the value</param>
 /// <param name="type">Type of the value</param>
 /// <returns>Value of the key as a string</returns>
 private string GetValue(string key, PlayerPrefsValueType type)
 {
     if (!PlayerPrefs.HasKey(key)) throw new ArgumentException("Key didn't exist in PlayerPrefs");
     switch (type) {
         case PlayerPrefsValueType.String:
             return PlayerPrefs.GetString(key);
         case PlayerPrefsValueType.Float:
             return PlayerPrefs.GetFloat(key).ToString(CultureInfo.InvariantCulture);
         case PlayerPrefsValueType.Int:
             return PlayerPrefs.GetInt(key).ToString(CultureInfo.InvariantCulture);
         default:
             return "";
     }
 }
    /// <summary>
    /// Draw search for PlayerPrefs key controls
    /// </summary>
    private void DrawSearchKey()
    {
        GUILayout.Label("Search for key", EditorStyles.boldLabel);
        searchKey_m = EditorGUILayout.TextField("Key", searchKey_m);

        //Edit existing key
        if (PlayerPrefs.HasKey(searchKey_m)) {

            PlayerPrefsValueType type = GetType(searchKey_m);

            // Delete
            if (GUILayout.Button("Delete")) {
                PlayerPrefs.DeleteKey(searchKey_m);
                Debug.Log("PlayerPrefs key: " + searchKey_m + ", deleted");
            }

            // Set value
            GUILayout.Label("Set new value", EditorStyles.boldLabel);
            searchNewVal_m = EditorGUILayout.TextField("New value", searchNewVal_m);
            if (type == PlayerPrefsValueType.Unknown) {
                searchValType_m = (PlayerPrefsValueType)EditorGUILayout.EnumPopup("Type", searchValType_m);
                EditorGUILayout.HelpBox("The value for the key is a default value so the type cannot be determined. It is your responsibility to set the value in correct type.", MessageType.Warning);
            } else {
                searchValType_m = type;
                GUILayout.Label("Value type: " + searchValType_m, EditorStyles.boldLabel);
                GUILayout.Label("Current value: " + GetValue(searchKey_m, searchValType_m), EditorStyles.boldLabel);
            }
            if (GUILayout.Button("Set")) {
                searchResponse_m = TrySetValue(searchKey_m, searchNewVal_m, searchValType_m);
            }
            if (searchResponse_m != null) {
                EditorGUILayout.HelpBox(searchResponse_m.message, searchResponse_m.messageType);
            }

        } else {
            EditorGUILayout.HelpBox("Key doesn't exist in player prefs", MessageType.Warning);
        }
    }
 /// <summary>
 /// Draw add key controls
 /// </summary>
 private void DrawAddKey()
 {
     GUILayout.Label("Add key", EditorStyles.boldLabel);
     addKey_m = EditorGUILayout.TextField("Key", addKey_m);
     addVal_m = EditorGUILayout.TextField("Value", addVal_m);
     addValType_m = (PlayerPrefsValueType)EditorGUILayout.EnumPopup("Type", addValType_m);
     if (GUILayout.Button("Add")) {
         addResponse_m = TrySetValue(addKey_m, addVal_m, addValType_m);
     }
     if (addResponse_m != null) {
         EditorGUILayout.HelpBox(addResponse_m.message, addResponse_m.messageType);
     }
 }