Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System;
- using System.IO;
- using System.Runtime.Serialization;
- using System.Runtime.Serialization.Formatters.Binary;
- namespace Doofah
- {
- /// <summary>
- /// Generic serialiser.
- /// Serialises any struct or class marked with [System.Serializable]
- /// </summary>
- public class GenericSerialiser
- {
- public static BinaryFormatter bFormatter = new BinaryFormatter ();
- public static void SaveToPlayerPrefs (string key, object objectToSerialise)
- {
- MemoryStream memoryStream = new MemoryStream ();
- bFormatter.Serialize (memoryStream, objectToSerialise);
- string str = System.Convert.ToBase64String (memoryStream.ToArray ());
- PlayerPrefs.SetString ( key, str);
- }
- public static T LoadFromPlayerPrefs<T>(string key)
- {
- if (!PlayerPrefs.HasKey(key))
- return default(T);
- string data = PlayerPrefs.GetString(key);
- MemoryStream stream = new MemoryStream(System.Convert.FromBase64String(data));
- T deserializedObject = (T)bFormatter.Deserialize(stream);
- return deserializedObject;
- }
- public static void SaveToBinaryFile(string fileName, object objectToSerialise)
- {
- MemoryStream memoryStream = new MemoryStream();
- bFormatter.Serialize(memoryStream, objectToSerialise);
- using (FileStream file = new FileStream(fileName, FileMode.Create, FileAccess.Write))
- {
- memoryStream.WriteTo(file);
- }
- }
- public static T LoadFromBinaryFile<T>(string filename)
- {
- byte[] bytes;
- using (FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read))
- {
- bytes = new byte[file.Length];
- file.Read(bytes, 0, (int)file.Length);
- }
- MemoryStream stream = new MemoryStream(bytes, writable: false);
- T deserializedObject = (T)bFormatter.Deserialize(stream);
- return deserializedObject;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement