在保存游戏存档的时候,我们可以直接将游戏数据定义一系列类,并通过[Serializable]属性将类标志为可序列化的。然后直接序列化和反序列化这些类完成游戏存档的读写。如果某个类的元素不想被序列化,可以使用[NonSerialized]属性来标志这个属性。例如:
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using UnityEngine;
[Serializable]
public class SaveData
{
Dictionary<string, string> dict;
SaveData()
{
dict = new Dictionary<string, string>();
}
public void Clear()
{
dict.Clear();
}
public static void Load(ref SaveData saveData, string path)
{
try
{
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate))
{
try
{
var bf = new BinaryFormatter();
var result = bf.Deserialize(fs) as SaveData;
if (result !=