예제 #1
0
    public static void Save()
    {
        SaveState data = saveState;

        string path = Application.persistentDataPath + "/" + saveMethod.ToString() + fileName;

        if (saveMethod == SaveMethod.Binary)
        {
            BinaryFormatter bf   = new BinaryFormatter();
            FileStream      file = File.Create(path);
            bf.Serialize(file, data);
            file.Close();
        }
        else if (saveMethod == SaveMethod.Json)
        {
            string serializedData = JsonUtility.ToJson(data, true);
            Debug.Log(data + " ------- " + serializedData);
            File.WriteAllText(path, serializedData);
        }
        else if (saveMethod == SaveMethod.Json_PlayerPrefs)
        {
            string serializedData = JsonUtility.ToJson(data, false);
            PlayerPrefs.SetString(fileName, serializedData);
        }
    }
예제 #2
0
        /**
         * <summary>Serializes an object, either by XML, Binary or Json, depending on the platform.</summary>
         * <param name = "dataObject">The object to serialize</param>
         * <param name = "addMethodName">If True, the name of the serialization method (XML, Binary or Json) will be appended to the start of the serialized string. This is useful when the same file is read later by a different serialization method.</param>
         * <returns>The object, serialized to a string</returns>
         */
        public static string SerializeObject <T> (object dataObject, bool addMethodName = false)
        {
            SaveMethod saveMethod       = SaveSystem.GetSaveMethod();
            string     serializedString = "";

            if (saveMethod == SaveMethod.XML)
            {
                serializedString = SerializeObjectXML <T> (dataObject);
            }
            else if (saveMethod == SaveMethod.Binary)
            {
                serializedString = SerializeObjectBinary(dataObject);
            }
            else if (saveMethod == SaveMethod.Json)
            {
                serializedString = SerializeObjectJson(dataObject);
            }

            if (serializedString != "" && addMethodName)
            {
                serializedString = saveMethod.ToString() + serializedString;
            }

            return(serializedString);
        }
예제 #3
0
        /**
         * <summary>De-serializes a RememberData class, either from XML or Binary, depending on the platform.</summary>
         * <param name = "dataString">The RememberData class, serialized as a string</param>
         * <returns>The de-serialized RememberData class</return>
         */
        public static T LoadScriptData <T> (string dataString) where T : RememberData
        {
            SaveMethod saveMethod = SaveSystem.GetSaveMethod();

            if (dataString.StartsWith(saveMethod.ToString()))
            {
                dataString = dataString.Remove(0, saveMethod.ToString().ToCharArray().Length);
            }

            if (saveMethod == SaveMethod.Binary)
            {
                return((T)Serializer.DeserializeRememberData <T> (dataString));
            }
            else
            {
                return(Serializer.DeserializeObject <T> (dataString));
            }
        }
예제 #4
0
        /**
         * <summary>Deserializes a string into an OptionsData class.</summary>
         * <param name = "dataString">The OptionsData, serialized as a string</param>
         * <returns>The de-serialized OptionsData class</returns>
         */
        public static OptionsData DeserializeOptionsData(string dataString)
        {
            SaveMethod saveMethod = SaveSystem.GetSaveMethod();

            if (dataString.StartsWith(saveMethod.ToString()))
            {
                dataString = dataString.Remove(0, saveMethod.ToString().ToCharArray().Length);
            }
            else
            {
                if (dataString.StartsWith("XML") || dataString.StartsWith("Json") || dataString.StartsWith("Binary"))
                {
                    // Switched method, so make new
                    return(new OptionsData());
                }
            }

            return((OptionsData)DeserializeObject <OptionsData> (dataString));
        }
예제 #5
0
        /**
         * <summary>De-serializes an object from a string, according to the game's SaveMethod.</summary>
         * <param name = "dataString">The object, serialized into a string</param>
         * <returns>The object, deserialized</returns>
         */
        public static T DeserializeObject <T> (string dataString)
        {
            SaveMethod saveMethod = SaveSystem.GetSaveMethod();

            if (dataString == null || dataString.Length == 0)
            {
                return(default(T));
            }
            else if (dataString.Contains("<?xml") || dataString.Contains("xml version"))
            {
                saveMethod = SaveMethod.XML;
            }
            else if (saveMethod == SaveMethod.XML && !dataString.Contains("<?xml") && !dataString.Contains("xml version"))
            {
                return(default(T));
            }

            if (dataString.StartsWith(saveMethod.ToString()))
            {
                dataString = dataString.Remove(0, saveMethod.ToString().ToCharArray().Length);
            }

            T result = default(T);

            if (saveMethod == SaveMethod.XML)
            {
                result = (T)DeserializeObjectXML <T> (dataString);
            }
            else if (saveMethod == SaveMethod.Binary)
            {
                result = (T)DeserializeObjectBinary <T> (dataString);
            }
            else if (saveMethod == SaveMethod.Json)
            {
                result = (T)DeserializeObjectJson <T> (dataString);
            }

            if (result != null && result is T)
            {
                return((T)result);
            }
            return(default(T));
        }