Esempio n. 1
0
    public static void SavePersistentCharacterData <T>(this T characterData) where T : IPlayerCharacterData
    {
        var savingData = new PlayerCharacterData();

        characterData.CloneTo(savingData);
        if (string.IsNullOrEmpty(savingData.Id))
        {
            return;
        }
        savingData.LastUpdate = (int)(System.DateTime.Now.Ticks / System.TimeSpan.TicksPerMillisecond);
        var binaryFormatter   = new BinaryFormatter();
        var surrogateSelector = new SurrogateSelector();

        surrogateSelector.AddAllUnitySurrogate();
        surrogateSelector.AddAllCharacterRelatesDataSurrogate();
        binaryFormatter.SurrogateSelector = surrogateSelector;
        var path = Application.persistentDataPath + "/" + savingData.Id + ".sav";

        Debug.Log("Character Saving to: " + path);
        var file = File.Open(path, FileMode.OpenOrCreate);

        binaryFormatter.Serialize(file, savingData);
        file.Close();
        Debug.Log("Character Saved to: " + path);
    }
Esempio n. 2
0
 public static T LoadPersistentCharacterData <T>(this T characterData, string path) where T : IPlayerCharacterData
 {
     if (File.Exists(path))
     {
         var binaryFormatter   = new BinaryFormatter();
         var surrogateSelector = new SurrogateSelector();
         surrogateSelector.AddAllUnitySurrogate();
         surrogateSelector.AddAllCharacterRelatesDataSurrogate();
         binaryFormatter.SurrogateSelector = surrogateSelector;
         var file = File.Open(path, FileMode.Open);
         PlayerCharacterData loadedData = (PlayerCharacterData)binaryFormatter.Deserialize(file);
         file.Close();
         loadedData.CloneTo(characterData);
     }
     return(characterData);
 }