在Unity中实现场景快照式自动存档功能

您所在的位置:网站首页 unity怎么设置自动保存 在Unity中实现场景快照式自动存档功能

在Unity中实现场景快照式自动存档功能

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

关于游戏中的自动保存功能

大量的线性故事类型游戏使用了自动存档功能增强玩家游戏体验的连续性和沉浸感,玩家在经过自动存档点后触发自动保存功能,跳出自动保存图标并在不打断游玩的情况下对此刻游戏场景中的数据进行快照保存,待玩家死亡后还原存档时的场景情况。

Image title

那么在Unity中该如何实现这个功能呢?

笔者发现大名鼎鼎的数据存储插件Easy Save 3 插件就附带了这个功能,更棒的是这个功能非常简单易用!

PS:没有用过这个插件的小伙伴可以看商店页面介绍(打折时候的价格绝对物超所值),笔者已经用这个插件代替自己写的数据存储系统了(自己的白写了 T-T)

此篇文章笔者主要介绍Auto Save功能的使用,主体功能可以参考官网链接学习(其实更简单)

基础功能演示

1.购买并在工程中导入插件

2.打开Window > Easy Save 3 > Auto Save,点击Enable Auto Save for this scene按钮在场景中生成Easy Save 3 Manager对象

3.创建一个Cube放在(0,0,0)位置,打开Window > Easy Save 3 > Auto Save,你会发现场景中的所有对象都在列表中,选中Cube下拉栏勾选Cube(Transform)项,关闭页面

Image title

4.运行场景,随意移动Cube到其他位置,停止场景运行

Image title

5.再次运行场景,我们发现Cube出现在了第4步移动到的位置上,检查点功能成功运行

Image title

以上就是Auto Save基础功能的演示,详细功能说明可以看AutoSave功能官方说明。

使用指南

接下来是笔者在实际项目中使用碰到的一些问题的解决方法

如何在游戏过程中调用自动存档?

可以在主角必经的点上设置自动保存触发区域,达到以后调用ES3AutoSaveMgr.Current.Save()触发自动存档,也可以通过计时器在时间到达后触发自动存档。

如何细化需要存储的快照数据?

点击齿轮图标可以进入脚本数据存储页,勾选实际需要存储的数据,减少无效数据的存储,加快存储速度,减少存档大小。

Image title

如何在读档后还原敌人的状态?

敌人的数据可以通过脚本进行快照,可是实时运行的Animator数据插件是不支持快照存储的,并且插件也没有提供回档以后的回调函数,笔者的方法是通过AI数据的数据恢复使角色行为跳回初始行为,在初始行为中进行Animator实时数据的还原使角色恢复到存储时的动画状态,小伙伴们可以用这个思路在自己的AI系统中还原角色动画

Image title

存档时的卡顿问题

因为此功能在主线程进行数据写入,所以在存储时游戏会出现轻微卡顿问题,由于存储时需要读取GameObject数据,并且这些数据必须要在主线程读取,所以无法使用多线程在后台处理数据存储,目前只能通过尽量减少保存的数据量减少卡顿,小伙伴们有能力的话可以研究一下多线程版本怎么实现。

以上就是在Unity中实现场景快照式自动存档功能的全部内容了,希望能帮到你~ 由于笔者自己也在紧张开发,抽空写了这篇指南,有任何疏漏欢迎指正,笔者会尽快修改,谢谢!最后祝大家新年快乐!顺利做出自己梦想中的游戏!


【本文地址】


今日新闻


推荐新闻


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