一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何在 Twine/Harlowe 内实现可重复点击且不消失的链接

时间:2026-07-11 11:08:59 编辑:袖梨 来源:一聚教程网

在 Twine/Harlowe 中,使用 (link:) 宏会导致链接点击后立即从页面中移除;若需多次触发同一交互(如反复弹出提示),应改用 (link-rerun:) 宏——它保留链接并重新执行其内容。

在 twine/harlowe 中,使用 `(link:)` 宏会导致链接点击后立即从页面中移除;若需多次触发同一交互(如反复弹出提示),应改用 `(link-rerun:)` 宏——它保留链接并重新执行其内容。

默认情况下,Harlowe 的 (link:) 宏设计为“一次性”交互:用户点击后,宏所在的文本节点会被替换(通常为空),从而造成“链接消失”的现象。这并非 Bug,而是其语义所决定的行为——(link:) 表示“跳转或触发一次动作后退出当前上下文”。但许多交互式叙事场景(如检查物品、重复对话、调试测试)需要持久可点击的按钮式链接,此时应选用语义更匹配的 (link-rerun:)。

✅ 正确写法(链接常驻,可无限点击):

Thing (link-rerun: "Look at")[(alert: ["It's a thing"], "Sure.")]

⚠️ 注意事项:

  • (link-rerun:) 不会刷新整个 passage,仅重新运行其内部的糖语法(如 (alert:)、(set:)、(if:) 等),因此适合轻量级、无副作用的交互;
  • 若链接内含状态变更(如计数器),请确保逻辑正确,例如:
    (set: $clicks to it + 1)You've clicked this $(clicks) time(s). (link-rerun: "Click again")[...]
  • 避免在 (link-rerun:) 内执行破坏性操作(如 (goto:) 或清空变量),否则可能引发意外行为;
  • 不要混淆 (link-goto:)(跳转到另一 passage 并保留原链接)与 (link-rerun:)(留在当前 passage 并重执行)——二者用途截然不同。

总结:当需要“点击即响应、响应后仍可用”的交互时,(link-rerun:) 是 Harlowe 提供的标准解决方案。理解各链接宏的语义差异(link → 一次性 / link-rerun → 可重入 / link-goto → 导航保留),是构建稳定、可维护 Twine 故事的关键基础。

热门栏目