Unity简单的存档系统

使用Unity的JsonUtility来进行存储和读取存档

存档系统脚本

1.创建一个文件保存的路径

private const string SavePath = "/saveData.json";

private void Start()
{
    path = Path.Combine(Application.persistentDataPath, SavePath);//Application.persistentDataPath自适应平台生成路径
}

这里使用了const关键字是因为const关键字限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。

2.存档方法

public void SaveData()
{
    string json = JsonUtility.ToJson(gameData);//转换成json
    File.WriteAllText(path, json);//写入设定好的文件路径文件中
}

3.读档方法

public void LoadData()
{
    if (File.Exists(path))//当没有存档时
    {
        string json = File.ReadAllText(path);//读取特定文件路径的文件
        gameData = JsonUtility.FromJson<data>(json);//反序列化
    }
    else
    {
        gameData = new data(1);//必须得有一个存档才能读档
        SaveData();//上面写的存档方法
    }
}

测试

一个简单的计数器&

### Unity 中实现存档系统的方法 #### 使用 `PlayerPrefs` 进行简单数据存储 在Unity中,`PlayerPrefs` 是一种轻量级的数据持久化工具,适合用于保存少量的关键值对数据。通过它可以方便地将玩家偏好设置、进度等信息保存到本地文件系统中。 - **创建和保存数据** 要保存一个整数值可以这样操作: ```csharp // 设置键 "HighScore" 的值为 100 PlayerPrefs.SetInt("HighScore", 100); // 将修改应用并保存至磁盘 PlayerPrefs.Save(); ``` 对于浮点数或字符串也有对应的函数 `SetFloat()` 和 `SetString()`. 同样可以通过 `GetInt()`, `GetFloat()`, 或者 `GetString()` 来获取之前储存过的值[^1]. #### 利用 JSON 序列化复杂对象 当面对更复杂的结构如角色属性列表时,则推荐采用JSON序列化的方案来处理这些更为丰富的数据集. 定义一个类表示待保存的对象: ```csharp [System.Serializable] public class PlayerData { public int health; public string name; } ``` 接着编写一段脚本来完成对象实例的转换工作, 并将其转成json格式字符串再写入文件内: ```csharp using UnityEngine; using System.IO; void Save(string path){ var player = new PlayerData {health = 100, name="Hero"}; // 转换成Json串 string jsonStr = JsonUtility.ToJson(player); File.WriteAllText(path, jsonStr); } void Load(string path){ if (!File.Exists(path)) return ; string jsonData = File.ReadAllText(path); var loadedPlayer = JsonUtility.FromJson<PlayerData>(jsonData); } ``` 这种方法不仅限定了特定平台上的支持情况(因为某些移动设备可能不允许直接访问文件),而且能够很好地兼容各种类型的变量组合形式[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值