序列化可以将对象转换为字节序列后存储在数据库、内存或者文件中;
File类
静态类,对文件进行操作,静态方法提供文件的创建、复制、剪切、打开,可以直接赋值到FileStream类。命名空间为System.IO
FileStream类
用来读取和写入操作系统文件,将文件的内容以字节流的形式呈现出来进行操作,可以读取(Load)、写入(Save)、关闭(Close)文件流,用完记得关闭文件流;
BinaryFormattter类
以二进制格式序列化和反序列化对象。通常数据会保存到硬盘中,所以即使之后推出运行模式,加载数据文件同样可以读取数据。
BinaryFormattter.Serialize(Stream,Object):将对象序列化到给定的流;
BinaryFormattter.DeSerialize(Stream):将指定的流反序列化成对象,即读取的过程;
二进制方法
二进制方法阅读性差,兼容性不高;
不用挂到物体,不继承monobehaviour;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//所有需要保存的数据声明在这个类,其他脚本调用时声明实例即可;
[System.Serializable]
public class Save
{
public float posX;
public float posY;
}
脚本挂到物体上,添加两个按钮试一下效果
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using UnityEngine;
using UnityEngine.UI;
public class GameControl : MonoBehaviour
{
public GameObject save;
public GameObject load;
private void Awake()
{
save = GameObject.Find("ButtonManager/Canvas/Save");
load = GameObject.Find("ButtonManager/Canvas/Load");
save.GetComponent<Button>().onClick.AddListener(SaveBySerialization);
load.GetComponent<Button>().onClick.AddListener(LoadByDeserialization);
}
private Save CreateSaveGameObject() {
Save save = new