Advertisement
Munchy2007

GenericSerialiser

Apr 25th, 2016
1,639
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.01 KB | None | 0 0
  1. using UnityEngine;
  2. using System;
  3. using System.IO;
  4. using System.Runtime.Serialization;
  5. using System.Runtime.Serialization.Formatters.Binary;
  6.  
  7. namespace Doofah
  8. {
  9.     /// <summary>
  10.     /// Generic serialiser.
  11.     /// Serialises any struct or class marked with [System.Serializable]
  12.     /// </summary>
  13.     public class GenericSerialiser  
  14.     {
  15.         public static BinaryFormatter bFormatter = new BinaryFormatter ();
  16.  
  17.         public static void SaveToPlayerPrefs (string key, object objectToSerialise)
  18.         {
  19.             MemoryStream memoryStream = new MemoryStream ();
  20.             bFormatter.Serialize (memoryStream, objectToSerialise);
  21.            
  22.             string str = System.Convert.ToBase64String (memoryStream.ToArray ());
  23.             PlayerPrefs.SetString ( key, str);
  24.         }
  25.  
  26.         public static T LoadFromPlayerPrefs<T>(string key)
  27.         {
  28.             if (!PlayerPrefs.HasKey(key))
  29.                 return default(T);
  30.  
  31.             string data = PlayerPrefs.GetString(key);
  32.             MemoryStream stream = new MemoryStream(System.Convert.FromBase64String(data));
  33.  
  34.             T deserializedObject = (T)bFormatter.Deserialize(stream);
  35.  
  36.             return deserializedObject;
  37.         }
  38.            
  39.         public static void SaveToBinaryFile(string fileName, object objectToSerialise)
  40.         {
  41.             MemoryStream memoryStream = new MemoryStream();
  42.             bFormatter.Serialize(memoryStream, objectToSerialise);
  43.  
  44.             using (FileStream file = new FileStream(fileName, FileMode.Create, FileAccess.Write))
  45.             {
  46.                 memoryStream.WriteTo(file);
  47.             }
  48.         }
  49.  
  50.         public static T LoadFromBinaryFile<T>(string filename)
  51.         {
  52.             byte[] bytes;
  53.             using (FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read))
  54.             {
  55.                 bytes = new byte[file.Length];
  56.                 file.Read(bytes, 0, (int)file.Length);
  57.             }
  58.  
  59.             MemoryStream stream = new MemoryStream(bytes, writable: false);
  60.             T deserializedObject = (T)bFormatter.Deserialize(stream);
  61.  
  62.             return deserializedObject;
  63.         }
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement