/// <summary> /// Will save your data only if it present on persistentData /// </summary> /// <param name="savedData"></param> public void SaveData(SavedData savedData) { if (saveMode == SaveMode.SINGLE_FILE) { Debug.LogError("You don't use multiple file, you can't save only one saved data. Use SaveData() instead"); return; } string dataPath = savedData.filePath; Type type = savedData.GetType(); if (string.IsNullOrEmpty(dataPath)) { List <SavedData> savedDataList; savedDataDictionnary.TryGetValue(savedData.GetType(), out savedDataList); if (savedDataList == null) { Debug.LogError("There is no type of this data in the dictionnary, this is not possible. Use AddNewSavedData"); return; } int cpt = 0; foreach (SavedData sd in savedDataList) { if (sd == savedData) { dataPath = multipleFilesDirectoryPath + type.Name; if (!Directory.Exists(dataPath)) { Directory.CreateDirectory(dataPath); } dataPath += "/" + cpt; if (savedData is SavedData.IFullSerializationControl) { dataPath += ControlledSerializationFileExtension; using (FileStream fs = File.Create(dataPath)) { BinaryWriter writer = new BinaryWriter(fs); writer.Write(type.Name); ((SavedData.IFullSerializationControl)savedData).GetObjectData(writer); fs.Close(); } } else { dataPath += AutomaticSerializationFileExtension; BinaryFormatter bf = new BinaryFormatter(); using (FileStream fs = File.Create(dataPath)) { bf.Serialize(fs, savedData); fs.Close(); } } savedData.filePath = dataPath; savedData.fileNumber = cpt; } cpt++; } if (!savedDataList.Contains(savedData)) { Debug.LogError("This data is not in the dictionnary, this is not possible. Use AddNewSavedData"); return; } } else { if (savedData is SavedData.IFullSerializationControl) { using (FileStream fs = File.Create(dataPath)) { BinaryWriter writer = new BinaryWriter(fs); writer.Write(type.Name); ((SavedData.IFullSerializationControl)savedData).GetObjectData(writer); fs.Close(); } } else { using (FileStream fs = File.Create(dataPath)) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs, savedData); fs.Close(); } } } }