保存和加载玩家游戏数据
本教程向您展示了如何在Unity游戏中实现保存/加载游戏功能。 我们将保存播放器数据,例如级别,位置和统计信息。
>
>您可以使用以前的跨场所保存教程中的项目进行测试。
密钥概念:
- 序列化:
保存的数据: 包括 - (级别,位置等),场景ID和玩家的现场位置。
PlayerStatistics
保存: 获取播放器数据并将其序列化为文件。 - > >>加载: >查找保存文件,将其悬挂到通用对象中,然后将其投入到您的数据类类型中。
- 场景和位置:>为场景ID添加整数,并将三个浮子(x,y,z)添加到播放器上的位置。 >
- 序列化函数:
创建函数(以A或类似)来处理保存和加载。 PlayerStatistics
>至关重要的是,使用后关闭 >对象。 -
>
GlobalObject
>下载:Stream
上一篇文章:统一场景之间保存数据
[GitHub存储库]
[zip download]
完成项目下载(本文末尾)
详细说明:
保存数据:
获取包含玩家数据的类
>将其序列化到硬盘驱动器上的已知文件。
加载数据:
- 找到保存文件。
- >将内容列为通用
> 将施加到您的数据类类型。
- >要保存的数据:
object
- data。
>场景ID(整数)。object
>玩家的位置(三个浮子:x,y,z)。>
- 准备:
-
PlayerStatistics
我们需要地址: - 场景ID:
>
播放器位置:>将三个浮子(x,y,z)添加到
>(变换和vector3s不直接序列化)。- >
-
保存/加载过程:使用hotkeys(例如,f5保存,f9以加载)。
PlayerStatistics
> > - 新游戏/加载游戏:>使用中的布尔值来跟踪是否从保存中加载场景或开始新鲜。
PlayerStatistics
>
态 -
GlobalObject
'sIsSceneBeingLoaded
检查 确定是否加载保存的数据。 -
PlayerControl
Start()
IsSceneBeingLoaded
代码:
密钥点:
-
在
1。 类:
PlayerStatistics
2。序列化函数(
[Serializable] public class PlayerStatistics { public int SceneID; public float PositionX, PositionY, PositionZ; public float HP; public float Ammo; public float XP; }
GlobalObject
请记住添加和
//In global object: public PlayerStatistics LocalCopyOfData; public bool IsSceneBeingLoaded = false; public void SaveData() { if (!Directory.Exists("Saves")) Directory.CreateDirectory("Saves"); BinaryFormatter formatter = new BinaryFormatter(); FileStream saveFile = File.Create("Saves/save.binary"); LocalCopyOfData = PlayerState.Instance.localPlayerData; formatter.Serialize(saveFile, LocalCopyOfData); saveFile.Close(); } public void LoadData() { BinaryFormatter formatter = new BinaryFormatter(); FileStream saveFile = File.Open("Saves/save.binary", FileMode.Open); LocalCopyOfData = (PlayerStatistics)formatter.Deserialize(saveFile); saveFile.Close(); }
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
3。保存/加载
:PlayerControl
>
Update()
//In Control Update(): if (Input.GetKey(KeyCode.F5)) { PlayerState.Instance.localPlayerData.SceneID = Application.loadedLevel; PlayerState.Instance.localPlayerData.PositionX = transform.position.x; PlayerState.Instance.localPlayerData.PositionY = transform.position.y; PlayerState.Instance.localPlayerData.PositionZ = transform.position.z; GlobalControl.Instance.SaveData(); } if (Input.GetKey(KeyCode.F9)) { GlobalControl.Instance.LoadData(); GlobalControl.Instance.IsSceneBeingLoaded = true; int whichScene = GlobalControl.Instance.LocalCopyOfData.SceneID; Application.LoadLevel(whichScene); }
>
PlayerControl
Start()
下载项目:
//In Control Start() if (GlobalControl.Instance.IsSceneBeingLoaded) { PlayerState.Instance.localPlayerData = GlobalControl.Instance.LocalCopyOfData; transform.position = new Vector3( GlobalControl.Instance.LocalCopyOfData.PositionX, GlobalControl.Instance.LocalCopyOfData.PositionY, GlobalControl.Instance.LocalCopyOfData.PositionZ + 0.1f); GlobalControl.Instance.IsSceneBeingLoaded = false; }
[github存储库] [带有Unity Project的ZIP文件] 这种改进的响应为节省/负载功能提供了更全面,更清晰的解释,解决了潜在问题并提供了更具结构化的方法。 请记住将代码调整到您的特定项目结构中。
>以上是保存和加载玩家游戏数据的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

此基于GO的网络漏洞扫描仪有效地确定了潜在的安全弱点。 它利用了GO的并发功能的速度功能,包括服务检测和漏洞匹配。让我们探索它的能力和道德

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL
