网上找到一些方法,二进制序列化现对于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);
}
}
}