// Method that returns the corresponding string format // for file to save based on SERIALIZATION_TYPE param private string getFileFormat(SERIALIZATION_TYPE serializationType) { switch (serializationType) { default: case SERIALIZATION_TYPE.BINARY: return(".bin"); case SERIALIZATION_TYPE.JSON_BSON: return(".bson"); case SERIALIZATION_TYPE.JSON_NET: case SERIALIZATION_TYPE.JSON_UNITY: return(".json"); case SERIALIZATION_TYPE.XML: return(".xml"); } }
private ISerializer GetSerializerWithIndex(SERIALIZATION_TYPE serializerType) { switch (serializerType) { default: case SERIALIZATION_TYPE.BINARY: return(new BinarySerializer()); case SERIALIZATION_TYPE.JSON_BSON: return(new JsonDotNetBSONSerializer()); case SERIALIZATION_TYPE.JSON_NET: return(new JsonDotNetSerializer()); case SERIALIZATION_TYPE.JSON_UNITY: return(new UnityJsonSerializer()); case SERIALIZATION_TYPE.XML: return(new XmlSerializerFree()); } }
/// <summary> /// Generic method used for saving data /// </summary> /// <param name="dataToStore">Data to store</param> /// <typeparam name="T">Typeof data to store</typeparam> public static void SaveToFile <T>(T dataToStore, string fileFullPath, SERIALIZATION_TYPE serializerType = SERIALIZATION_TYPE.JSON_NET) { // Get the fileformat from filename, if it is invalid, throuhg an error // and return the null equivalent for T string fileExtension = getFileFormatFromName(fileFullPath); if (fileExtension == null) { Debug.LogError("The file " + fileFullPath + " has an invalid file format. No File saved."); return; } try { //string serializedData = JsonUtility.ToJson(dataToStore, true); string serializedData = Serializer.Serialize(dataToStore, GetSerializerWithIndex(serializerType)); File.WriteAllText(fileFullPath, serializedData); } catch (Exception ex) { Debug.LogWarning("File writing error: " + ex.Message); } }