Dictionary <string, object> LoadFile(string fileName) { if (UsePlayerPrefs) { if (PlayerPrefs.GetString(kPreferencePrefix + fileName, string.Empty) == string.Empty) { SaveFile(fileName, new Dictionary <string, object>()); } } else { if (!File.Exists(Application.persistentDataPath + savePath + fileName)) { SaveFile(fileName, new Dictionary <string, object>()); } } var dict = new Dictionary <string, System.Object>(); string contents = string.Empty; if (UsePlayerPrefs) { contents = PlayerPrefs.GetString(kPreferencePrefix + fileName, string.Empty); } else { contents = File.ReadAllText(Application.persistentDataPath + savePath + fileName); } SerializableOutput data = JsonUtility.FromJson <SerializableOutput>(contents); for (int i = 0; i < data.keys.Length; i++) { string val = data.values[i]; object value; if (data.types[i] == ValueType.Bool) { value = bool.Parse(val); } else if (data.types[i] == ValueType.Int) { value = int.Parse(val); } else if (data.types[i] == ValueType.Float) { value = float.Parse(val); } else { value = val; } dict.Add(data.keys[i], value); } return(dict); }
void SaveFile(string filename, Dictionary <string, System.Object> entries) { int count = entries.Count; SerializableOutput data = new SerializableOutput(); data.keys = new string[count]; data.values = new string[count]; data.types = new ValueType[count]; int i = 0; foreach (var kvp in entries) { data.keys[i] = kvp.Key; object value = kvp.Value; if (value is bool) { data.types[i] = ValueType.Bool; } else if (value is int) { data.types[i] = ValueType.Int; } else if (value is float) { data.types[i] = ValueType.Float; } else { data.types[i] = ValueType.String; } data.values[i] = kvp.Value.ToString(); i++; } if (UsePlayerPrefs) { PlayerPrefs.SetString(kPreferencePrefix + filename, JsonUtility.ToJson(data)); } else { File.WriteAllText(Application.persistentDataPath + savePath + filename, JsonUtility.ToJson(data)); } }