Unity Fungus Save System 官方文档粗略翻译

官方文档

本人英语不好,只是需要详细了解下,就顺手随意的翻译一下。

为了保持明确性,部分专有名词不进行翻译,且部分使用简称。

  1. SP: Save Point. 存档点。
  2. SPC: Save Point Command. 存档点命令。
  3. SPL: Save Point Loaded event handler. 存档点加载事件处理器。
  4. SM: Save Menu. 存档菜单。

介绍

注意:存档系统现在是测试版,以从社区获得反馈。在未来的更新中可能会有突破性的改变。

Fungus 存档系统提供一个简单的方式存储和加载 Flowchart 的执行状态。

这个教学视频展示了如何快速的添加保存功能。

存档系统通过存储一系列 Save Points (之后用 SP 指代) 作为玩家的游戏进度,以建立一个 Save History. 一个基础的 Save Menu UI 允许玩家通过 Save History 存档、加载、重新开始、倒退和快进。

save_history.png

一个 SP 通过 Flowchart 中的 Save Point Command (之后用 SPC 指代) 创建。当一个 SP 被加载时,会在执行 SPC 后立刻恢复执行游戏。存档系统将负责在每个 SP 恢复 Flowchart 的变量状态,你还可以通过 Save Point Loaded event handler 在加载特定 SP 时得到通知。

保存游戏的示例场景

以下内容为介绍示例场景的功能,不进行翻译。

To see how the save system works, open the example scene FungusExamples/Savegame/SaveGame.unity

Press play in Unity and click through the short story. The Save Menu can be accessed at any time by clicking the small gears icon in the top right. Try saving, loading, rewinding, fast forwarding and restarting at different points as you play through the story. Also try saving the game in the middle of the story and stopping the game. Press Play again and notice that the game resumes where you left off.

The Save Menu also supports an auto-saving mode where the game is saved to disk at every Save Point. You can enable this by selecting the Save Menu object and selecting the Auto Save property. The Save and Load buttons are disabled when using Auto Save.

The following are the key elements that are used to implement saving in this example scene.

Save Menu UI

Save Menu 对象能在层级窗口的根层级下看到。这个对象控制玩家和存档系统交互的 UI 菜单。Save Menu 是一个单例对象,能跨场景存在,因此你只需要在第一个场景添加一个。

选择 Tools > Fungus > Create > Save Menu 添加 Save Menu.

创建 Save Points

SP 通过执行 Flowchart 中的 SPC 创建。

为了在示例场景中了解过程,确保 Flowchart 窗口显示(Tools > Fungus > Flowchart Window), 然后选择层级窗口中的 Flowchart 对象并选择其中的每一个 Block. 每个 Block 的第一个命令都是一个 SPC (通过 Flow > Save Point 添加)。

当每个 SPC 执行时,都会在 Save History 中添加一个新的 SP. 当你加载游戏时,在创建该 SP 的 SPC 后恢复执行游戏。

在示例场景中,进入 Flowchart 窗口选择 "Start" Block, 并选择位于命令列表顶部的 SPC, 可以发现 Is Start Point 属性启用。这是 Flowchart 中唯一启用该属性的 SPC. 在场景中应该只有一个 Start Point.

当开始新游戏时,Fungus 会寻找一个启用了 Is Start Point 属性的 SPC 并执行它。当加载游戏时,Fungus 会在相关的 SPC 开始执行并忽略 Start Point.

这意味着如果你的游戏支持保存,每个场景都应该总是只有一个启用了 Is Start Point 属性的 SPC.

注意:Game Started event handler 在新游戏和加载游戏时都会激活,这通常不会是你所期望的,因此避免在支持保存的游戏中使用它。

处理 Save Point Loaded events

当加载游戏时,为了确保场景处于正确的状态,你经常需要做一些额外工作。例如,摄像机也许需要移动到合适的位置,或者播放特定的音乐。通过 Save Point Loaded event handler (之后用 SPL 指代) 能简单的完成这些工作。

在示例场景中,在 Flowchart 中选择 "Play Music 1" Block, 能看到一个 SPL. 这会在 SP Keys 列表中的任意一个 SP 加载时执行 Block. 在这个例子中,我们简单的播放了一段音乐,但你可以做任何需要的配置。

SPL 在一个匹配的 SPC 执行时(需要启用 Fire Event 属性)也会激活。这允许你将所有场景配置命令放置到单个共享的 Block 中,当第一次到达 SPC 或在 SP 加载时,将调用该共享块。

保存 Flowchart 变量

每个 SP 能保存当时的 Flowchart 变量。你可以用一个 Save Data 对象让存档系统知晓哪些 Flowcharts 被包含其中。注意目前只保存 Boolean, Integer, Float, String 变量。

在示例场景中,Save Data 对象能在层级窗口中看到。Flowcharts 属性包括要保存的 Flowchart 对象列表。

通过 Tools > Fungus > Create > Save Data 添加一个 Save Data 对象到你的场景。你可以添加任意数量的 Flowcharts 到列表中,但确保每一个都有独一无二的名字,否则加载不会正确工作。

如果你对拓展存档系统支持的其它数据类型感兴趣(除了 Flowchart 变量),你可以修改或继承 SaveData 组件去实现。

Save Menu

Save Menu (以后用 SM 代表) 是一个简单的允许玩家和存档系统交互的 UI. 这一部分将解释每个按钮的功能和如何配置 SM 属性。

Save Menu 属性

有四个你可能想要配置的主要属性。

  • Save Data Key: 字符串类型的键,用于保存游戏数据在 Player Prefs 中。如果你在一个 Unity 项目中定义了多个游戏,请使用独一无二的键。
  • Load On Start: 在启动时自动加载。
  • Auto Save: 在每个 SP 自动保存游戏到硬盘上。当这个选项启用时,Save 和 Load 按钮将失效。
  • Restart Deletes Save: 当玩家重新开始游戏时,从硬盘删除游戏数据。这在你测试游戏时非常有用,能确保你每次都从空白的游戏状态开始。

注意:如果你的游戏使用了多个场景(通过 Load Scene 命令),确保在 Build Settings 中添加所有场景。

保存按钮

按下保存按钮,将使当前的 Save History 序列化为 Json 文本,并通过 PlayerPrefs 持久化储存下来。

加载按钮

按下加载按钮,将使之前保存的 Json 数据反序列化,并用于填充 Save History. 使用最近的 SP 通过以下顺序恢复游戏。

  • 加载保存在 SP 中的场景,即便它就是当前加载的场景。
  • 恢复 Flowchart 变量。
  • 调用 SPL 并在核实的 SPC 后开启 Flowchart 的执行。

回退和快进按钮

允许你在 Save History 的 SP 之间后退和前进。

每次移动只需加载存储在 Save History 中特定点上的 SP. 这本身不会修改 Save History 或持久化任何数据。然而,如果你退回到更早的 SP 并重新开始游玩,下次 SPC 执行会导致所有更早的 SP 永久丢失。

重新开始按钮

清空 Save History 并加载开始场景。开始场景是 SM 被第一次初始化的场景。

游戏启动

记住玩家能在任何时候选择加载或重启游戏。遵循以下简单的规则,以确保游戏启动在任何情况下都正常进行。

  1. 每个场景都应该有一个启用了 Is Start Point 属性的 SPC. 如果你有多个场景,确保每个场景都有一个 Start SP 定义,并且是场景中执行的第一个命令。
  2. 避免使用 Game Started event handler. 这只会在游戏第一次游玩时正常的工作,而不会在加载游戏时。在加载游戏后,你会想要从 SP 开始执行,而不是又一次从 Flowchart 的起点开始。
  3. 当你想要在某个特定的 SP 加载时,执行一个 Block, 使用 SPL. 这些事件处理器会在恢复执行前被调用,因此它给了你一个在游戏恢复游玩之前,配置工作的机会。

术语

Save Point

一个 SP 是游戏在某个时间点的状态的快照。每个 SP 记录了当前场景,当时的 Flowchart 执行(在 SPC 时),和当时的 Flowchart 变量的值。目前只支持 Boolean, Interger, Float, String 变量。

Save Point Command

SPC 被用于在 Flowchart 执行中创建一个 SP. 每个单独的 SPC 会有一个独一无二的 SP Key. Resume On Load 选项会导致在加载 SP 后从此点恢复执行。

Save Point Key

SP Key 是一个独一无二的字符串,作为每个 SP 的标识。默认下,父 Block 的名字被用于 SP Key, 但你也可以使用自定义的键(例如,在一个 Block 中有多条 SPC)。

注意:每个键必须在每个场景中都是独一无二的,否则无法正确加载。

Save History

Save History 包含一个之前记录的 SP 的列表,按时间顺序存储。当一个 SPC 执行时,一个新的 SP 被创建,并添加到 Save History 中。

为了在运行时可视化 Save History, 可以在层级中拓展 SM 对象。选择 Save Menu > Panel > Debug View 并激活该游戏对象。一个 Save History 中的 SP 总结,会被显示在一个文本窗口中。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容