Unity 游戏存档、读取(用C#代码保存游戏数据)

14 篇文章 3 订阅
12 篇文章 4 订阅
这篇博客介绍了如何在Unity中创建一个游戏存档系统。通过C#代码展示了SaveGame和LoadGame方法,利用BinaryFormatter进行数据序列化和反序列化,实现对Inventory和Item对象的保存和读取。玩家可以通过点击游戏内的Button触发保存和读取操作,确保游戏进度得以保存。
摘要由CSDN通过智能技术生成

游戏保存、读取的方法

在Unity中新建一个C#代码,将以下代码复制进去并且挂载到一个空物体上。

下面的代码分为SaveGame(保存数据)、LodeGame(读取数据)两个方法,可以在游戏中创建两个Button,并且分别创建点击事件。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;//必须要导入的包

public class GameSaveManager : MonoBehaviour
{
    public Inventory myInventory;//需要保存的数据
    public Item HpMedicine;//需要保存的数据

    public void SaveGame() //保存游戏方法
    {
        Debug.Log(Application.persistentDataPath);
        if (!Directory.Exists(Application.persistentDataPath + "/game_SaveGame"))
        {
            Directory.CreateDirectory(Application.persistentDataPath + "/game_SaveGame");
        }

        BinaryFormatter formatter = new BinaryFormatter();//二进制转换

        FileStream file = File.Create(Application.persistentDataPath + "/game_SaveGame/Inventory.txt");

        var json0 = JsonUtility.ToJson(myInventory);//需要保存的数据Json转换
        var json1 = JsonUtility.ToJson(HpMedicine);//需要保存的数据Json转换
        var json2 = JsonUtility.ToJson(MpMedicine);//需要保存的数据Json转换

        formatter.Serialize(file, json0);//保存的数据
        formatter.Serialize(file, json1);//保存的数据
        formatter.Serialize(file, json2);//保存的数据

        file.Close();
    }
    
    public void LoadGame()//读取游戏方法
    {
        BinaryFormatter bf = new BinaryFormatter();

        if (File.Exists(Application.persistentDataPath + "/game_SaveGame/Inventory.txt"))
        {
            FileStream file = File.Open(Application.persistentDataPath + "/game_SaveGame/Inventory.txt", FileMode.Open);

            JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), myInventory);//保存的数据
            JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), HpMedicine);//保存的数据
            JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), MpMedicine);//保存的数据

            file.Close();
        }

    }
}
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值