找回密码
 立即注册
查看: 647|回复: 0

Save System - 终极 Unity 存档

[复制链接]
发表于 2020-11-25 09:19 | 显示全部楼层 |阅读模式
经过一个多月的努力,把之前开源的插件升级成了收费版!(啥?)
Asset Store 页面:
这是一个跨平台存档系统,目前支持文件保存(可用于 iOS,Android,UWP,PC,Mac 和 Linux)和 Steam Cloud(基于Steamworks.NET)。
特性

    系统内部的所有操作都是异步执行的,这意味着它们可用于自动保存而不会阻塞主线程。支持SaveDescription,可以为存档设置时间戳、标题、细节描述和图标(静态/动态)。包含一个MultiSaveManager,可以使用存档队列、存档槽或同时使用它们。它有几种 UI 模式来处理显示逻辑和资源管理。您可以定义传统的数据类(内置二进制序列化、json序列化的支持),也可以使用新的SaveRegistry(同样支持二进制序列化和文本序列化),而无需定义数据类。将其用于现有数据(例如系统设置)非常方便。您可以为不同的内容选择不同的存档系统。例如,您可以将游戏数据保存到 Steam Cloud 并将画面设置保存为本地文件。
注意:要支持 PS4、XboxOne 和 Switch,我必须拥有开发中间件的资质才行,支持它们很容易,但是很难申请这些资质。目前,如果您正在为这些平台开发游戏,则需要自己扩展此系统(可参考 FileSaveSystem 和 SteamSaveSystem)。
概念

存档是定义了如何记录、还原以及重置一系列数据的对象。您可以使用一个存档对象创建多个物理文件。请注意,存档本身不必包含任何数据,它在存档系统中表示为 ISave 接口。当游戏保存存档时,将调用 ISave.Record;当游戏加载存档时,将调用 ISave.Restore;当游戏首次运行或存档损坏时,将调用 ISave.Reset。
存档描述是一个包含存档信息的对象,例如时间戳、标题、细节描述和图标。存档不一定含有存档描述,除非有必要在用户界面上显示它。从物理上讲,存档描述可能存储在与存档不同的文件中。存档描述在存档系统中表示为 SaveDescription 结构。
存档系统是一个可以执行存档的保存、加载、存档描述加载、删除和存在性验证的对象。在内部,存档系统将所有操作存储为任务队列,并按顺序执行它们。对于每个任务,存档系统会立即从主线程获取任务数据,然后将其暂存于任务队列中,等之前的任务完成时才会开始此任务。通常,任务的真正执行是在其他线程中。任务完成后将通过主线程反馈给调用方。通过这种机制,存档系统本身可以完全避免文件访问冲突,并提供一种健壮且无阻塞的访问方式。您不能自己创建存档系统的实例,只能通过访问指定类型存档系统的 instance 属性获得实例,例如 FileSaveSystem.instance。
存档注册表是一种存档的实现,是此存档系统的推荐使用方式。使用存档注册表的好处是您不必手动定义存档数据类,也不必手动应用和同步存档数据。一个存档注册表包含一系列存档条目,每个存档条目代表可以保存/加载的一条数据。您可以通过创建BinarySaveField<T>或TextSaveField<T>类的实例来创建存档条目,或者可以通过实现 IBinarySaveItem 或 ITextSaveItem 接口使您的类成为存档条目类型。
多存档管理器是基于存档系统的高层级应用,致力于解决多存档管理逻辑。您可以使用存档队列、存档槽或同时使用它们。存档队列具有固定的容量,当新的存档存储到队列时,如果队列已满,最旧的存档将被自动删除。存档槽数量也有限,与存档队列不同的是,用户可以/必须手动指定保存位置来确定是否覆盖现有的存档。多存档通常与用户界面紧密相关,因此多存档管理器支持几种 UI 模式:Slots,Queue,SlotsAndQueue,AllInOneQueue。您应该选择哪种 UI 模式取决于您的设计需求。


机翻看到这您也不容易,不过这的确是一个强大的存档系统,设计时已经考虑了对所有主机平台 API 的兼容性,如果你的游戏将来想移植到主机上,使用这个插件可以最小化你的移植成本。

Unity Save 终极游戏存档
https://www.zhihu.com/video/1188499350337470464

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 19:50 , Processed in 0.100370 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表