Unity2D案例补充

您所在的位置:网站首页 unity游戏保存功能怎么做 Unity2D案例补充

Unity2D案例补充

2024-07-13 08:36| 来源: 网络整理| 查看: 265

概述

本篇博客作为上一篇文章【Unity2D案例学习——背包系统制作】(https://blog.csdn.net/qq_42896549/article/details/105033887)的补充内容,同样来自b站up主M_Studio 在之前的制作中,该项目已经可以实现在Unity引擎中的正常运作——玩家可以收集场景物品到背包中,在背包中拖拽调整物品的位置,并在数据库文件中保存这些操作数据。但将游戏导出后,运行时所作的操作并不能保存到下一次游戏的开启。因此我们需要学习保存和读取ScriptableObject

通过脚本完成数据存储和加载

1.新建一个空物体GameSaveManager,用来承载游戏保存的任务 在这里插入图片描述 2.新建脚本GameSaveManager,在其中编写相关方法来实现游戏数据的存储和加载。下面是具体的代码:

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 void SaveGame() { Debug.Log(Application.persistentDataPath);//显示游戏文件存储路径 if (!Directory.Exists(Application.persistentDataPath + "/game_SaveData"))//若路径下不存在指定文件夹 { Directory.CreateDirectory(Application.persistentDataPath + "/game_SaveData");//创建指定文件夹 } BinaryFormatter formatter = new BinaryFormatter();//二进制序列化 FileStream file = File.Create(Application.persistentDataPath + "/game_SaveData/inventory.txt");//创建存储文件inventory var json = JsonUtility.ToJson(myInventory);//将ScriptableObject(只读)转换为Json存储方法 formatter.Serialize(file, json);//将json序列化到file中 file.Close();//关闭文件流 } public void LoadGame() { BinaryFormatter bf = new BinaryFormatter(); if (File.Exists(Application.persistentDataPath + "/game_SaveData/inventory.txt"))//若指定文件存在 { FileStream file = File.Open(Application.persistentDataPath + "/game_SaveData/inventory.txt",FileMode.Open);//打开指定文件 //通过JsonUtility中的方法重写Inventory JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), myInventory);//将存储的数据反序列化并重写到Inventory中 file.Close(); } } }

在上面的代码中,我们使用了C#中相关的序列化方法来实现游戏数据的存储。 首先,我们引用了需要存储的游戏数据对象: 在这里插入图片描述 如果是常规的类,只需要通过简单的序列化方法即可完成存储以及加载。但Inventory继承自ScriptableObject,因其特性无法直接进行序列化,故需要借助特定的方法将之转化为可序列化文件,以及通过这样的可序列化文件改写回来: 在这里插入图片描述 在这里插入图片描述 解决了ScriptableObject的存储和加载问题后,只需要借助C#中的序列化相关方法完成数据的存取就实现了对ScriptableObject的处理 我们可以在游戏中添加两个按钮来调用存储和加载游戏的方法: 在这里插入图片描述 这样导出游戏后,就可以简单的完成数据保存了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3