Skip to content

指南:状态、会话与存档 ​

故事历史 ​

故事历史是时刻的集合。每当段落导航发生时——且仅在段落导航发生时——就会创建一个新时刻。每个时刻包含有关活动段落和所有故事变量状态的数据。历史允许玩家在这些时刻之间导航。

历史中包含的时刻数量通常通过 Config.history.maxStates 设置来限制。随着新时刻被添加,超过最大数量的较旧时刻会按时间顺序(最早优先)过期。过期时刻被记录在单独的过期集合中,无法再导航到。

注意:所有检查历史中时刻是否存在的用户函数和宏都会同时检查故事历史和过期时刻,因此即使历史被限制为单个时刻也会按预期工作。

保存故事会记录直到最后创建的时刻为止的故事状态。这不一定与故事的当前状态相同:因为时刻创建与段落导航绑定,所以在一次段落导航与下一次之间发生的变化不是当前时刻的一部分,直到下一次导航创建下一个时刻时才会被时刻保留。

游玩会话 ​

SugarCube 会在每次创建新时刻时自动将当前游玩状态存储到浏览器的会话存储中。这可以被视为一个特殊的、临时的已保存故事,在玩家当前浏览会话结束后自动删除。

此功能还能防止玩家在使用浏览器前进/后退按钮导航或刷新浏览器时丢失进度。

自动存档 ​

SugarCube 具有可配置的自动存档。自动存档是普通的浏览器存档,根据配置在每个回合或仅在特定回合自动保存。

加载存档时会发生什么? ​

当加载存档时,从存档加载的状态会替换当前状态。先前的状态会完全丢失——新状态不会被添加到或与当前状态组合,而是完整地替换它。

刷新与重启 ​

每当你的故事首次启动或出于任何原因重启时——例如,浏览器窗口/标签页被刷新/重新加载——它都会经历其启动序列。首先,处理 CSS、JavaScript 和 Widget 区。接下来,处理任何 init 标签段落和 StoryInit 特殊段落。最后,发生以下两件事之一(按顺序):恢复现有游玩会话(如果存在),否则运行起始段落。

当故事由 SugarCube 重启而不是通过浏览器刷新时,游玩会话(如果有)不会被加载。CSS、JavaScript 和 Widget 区、任何 init 标签段落以及 StoryInit 特殊段落会照常处理,然后渲染起始段落。

评论