学着做了一个简单的背包,但是怎么保存list里面的数据呀,有点没想懂,求解!
在Unity中,你可以使用多种方式来保存和读取List的数据,其中一种常见的方式是使用Unity自带的PlayerPrefs类,但是PlayerPrefs类并不直接支持List类型,所以你需要将List转换为字符串或者其他可以被PlayerPrefs支持的类型。
另一种方式是使用序列化和反序列化。你可以将List序列化为JSON字符串,然后保存到文件中。需要的时候,你可以从文件中读取JSON字符串,然后反序列化为List。
以下是一个简单的例子,展示了如何使用JSON序列化和反序列化来保存和读取List的数据:
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using System.Runtime.Serialization.Formatters.Binary;
public class SaveLoadManager : MonoBehaviour
{
public List<int> itemList = new List<int>();
void Start()
{
// 添加一些数据到List中
itemList.Add(1);
itemList.Add(2);
itemList.Add(3);
// 保存数据
SaveData();
// 清空List
itemList.Clear();
// 读取数据
LoadData();
// 输出读取到的数据
foreach (int item in itemList)
{
Debug.Log(item);
}
}
void SaveData()
{
BinaryFormatter formatter = new BinaryFormatter();
FileStream fileStream = new FileStream(Application.persistentDataPath + "/save.dat", FileMode.Create);
formatter.Serialize(fileStream, itemList);
fileStream.Close();
}
void LoadData()
{
string path = Application.persistentDataPath + "/save.dat";
if (File.Exists(path))
{
BinaryFormatter formatter = new BinaryFormatter();
FileStream fileStream = new FileStream(path, FileMode.Open);
itemList = formatter.Deserialize(fileStream) as List<int>;
fileStream.Close();
}
}
}
在这个例子中,我们首先创建了一个List,并添加了一些数据。然后,我们调用SaveData方法将List序列化为JSON字符串并保存到文件中。然后,我们清空了List,然后调用LoadData方法从文件中读取JSON字符串并反序列化为List。
注意,这个例子使用的是System.Runtime.Serialization.Formatters.Binary.BinaryFormatter类来进行序列化和反序列化,这个类在Unity中是可用的。如果你的项目中已经包含了Newtonsoft.Json库,你也可以使用这个库来进行JSON序列化和反序列化,这个库提供了更多的功能和选项。
另外,Application.persistentDataPath是Unity提供的一个路径,这个路径在不同的平台上有不同的值,但是它总是指向一个可以用来存储持久化数据的位置。