学着做了一个简单的背包,但是怎么保存list里面的数据呀,有点没想懂,求解!
1条回答 默认 最新
关注
在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提供的一个路径,这个路径在不同的平台上有不同的值,但是它总是指向一个可以用来存储持久化数据的位置。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录