[Serializable] 序列化对象的类添加这个表示
[SerializeField]序列化对象的字段要添加这个标识,否则需要在构造函数里赋值
如果想unity 的 ScriptableObject 实时保存的工具只能放置一维数组,看情况用,能同时使用。不是很建议使用
如果做好了上边内容 使用如下
//参考
void SAVE()
{
if (!Directory.Exists(Application.dataPath + "/MapData/"))
{
Directory.CreateDirectory((Application.dataPath + "/MapData/"));
}
BinaryFormatter formatter = new BinaryFormatter();//二进制转化
FileStream file2 = File.Create(Application.dataPath + "/MapData/MapDataJSON.txt");// 1 创建存储文件
var json2 = JsonUtility.ToJson(MapAllData.MapData);// 2 能覆写回来
formatter.Serialize(file2, json2);//(1,2)
file2.Close();
}
void SAVE<T>(string filePath, string targetName, object t)
{
if (!Directory.Exists(Application.dataPath + "/" + filePath + "/"))
{
Directory.CreateDirectory((Application.dataPath + "/" + filePath + "/"));
}
BinaryFormatter formatter = new BinaryFormatter();//二进制转化
FileStream file2 = File.Create(Application.dataPath + "/" + filePath + "/" + targetName + ".txt");// 1 创建存储文件
var json2 = JsonUtility.ToJson((T)t);// 2 能覆写回来
formatter.Serialize(file2, json2);//(1,2)
file2.Close();
}
void Read()
{
Debug.Log("开始读取");
MapAllData.MapData = null;
BinaryFormatter bf2 = new BinaryFormatter();
if (File.Exists(Application.dataPath + "/MapData/MapDataJSON.txt"))
{
Debug.Log("开始读取");
FileStream file2 = File.Open(Application.dataPath + "/MapData/MapDataJSON.txt", FileMode.Open);//打开文件
JsonUtility.FromJsonOverwrite((string)bf2.Deserialize(file2), MapAllData.MapData);//反序列化
if (MapAllData.MapData == null)
{
// text.text = "读取失败";
Debug.Log("duqushibai");
}
else
{
// text.text = "读取完成";
Debug.Log("读取完成");
}
file2.Close();
}
|