网上找到一些方法,二进制序列化现对于json不可视,稍加改进封装了下,代码具体如下
using UnityEngine; using System.Collections; using System.Collections.Generic; using System.IO; using System; using System.Runtime.Serialization.Formatters.Binary; public class SerializeTHFile { public static void SerializeMethod<T>(T tempSerializeList) // 二进制序列化 { //路径 string path = Application.isEditor ? Application.persistentDataPath.Replace("/" + Application.productName, "") : Application.persistentDataPath; path += "/保存文件名称" ; FileStream fs = new FileStream(path, FileMode.Create); try { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs, tempSerializeList); fs.Close(); } catch (Exception ex) { fs.Close(); Debug.Log(ex); } } public static T DeserializeMethod<T>() // 二进制反序列化 { T tempDeserializeList ; string path = Application.isEditor ? Application.persistentDataPath.Replace("/" + Application.productName, "") : Application.persistentDataPath; path += "/读取文件名称" ; FileInfo binaryFile = new FileInfo(path); if (!binaryFile.Exists) { Debug.Log("反序列化文件不存在"); return default(T); } FileStream fs = new FileStream(path, FileMode.Open); try { BinaryFormatter bf = new BinaryFormatter(); tempDeserializeList = (T)bf.Deserialize(fs); fs.Close(); return tempDeserializeList; } catch (Exception ex) { Debug.LogWarning(ex); fs.Close(); File.Delete(path); return default(T); } } }