3.9 KiB
3.9 KiB
选项已探索追踪说明
状态:方案已定,运行时已实现(内存态)
读者:剧情策划、关卡策划、写 Yarn 的同学
参考脚本:FP_Day1_sleep.yarn
1. 用途
用于可反复探索的选项列表。玩家点过某个选项后,该选项会显示为已探索;如果相关剧情变量变化,选项可以重新变回未探索,提示玩家这里可能有新内容。
2. 基本规则
| 写法 | 含义 |
|---|---|
tags: hub / tags: detour |
节点内选项默认追踪 |
tags: linear / 无 tags |
节点内选项默认不追踪 |
#deps:变量名 |
变量变化后,取消该选项的已探索状态 |
#track |
强制追踪 |
#notrack |
强制不追踪,适合“返回 / 走开 / 下楼”等操作按钮 |
#deps: 里的变量名不写 $,多个变量用英文逗号分隔:
->女孩 #deps:ppStage,scj
<<if>> 只控制选项是否显示;#deps: 才表示“变量变化后这里有新内容”。
->地上 <<if $gameStage < 2>> #deps:gameStage
<<detour 检查地上>>
<<jump 天台>>
优先级:
#notrack > #track / #deps:... > 节点 tags 默认规则
3. 常见写法
3.1 普通探索菜单
hub 里的选项默认会追踪,不需要额外写标记。
title: 教室
tags: hub
---
->观察
<<detour 观察>>
<<jump 教室>>
->趴回去再睡会
<<detour 趴回去再睡会>>
<<jump 教室>>
->离开教室 #notrack
<<jump 走廊>>
===
3.2 内容随剧情阶段变化
如果选项内容会随变量变化,就写 #deps:。
title: 走廊
tags: hub
---
->女孩 #deps:ppStage,scj
<<detour 女孩>>
<<jump 走廊>>
->窗外 <<if $gameStage == 0>>
<<detour 走廊窗外>>
<<jump 走廊>>
===
这里“女孩”会在 $ppStage 或 $scj 变化后重新变成未探索;“窗外”只是受条件控制显示,不会因为 $gameStage 变化自动刷新已探索状态。
3.3 父入口和子选项
父入口不会自动汇总子选项。进入过“女孩”只代表外层“女孩”已探索,不代表里面的“交谈”也已探索。
title: 走廊
tags: hub
---
->女孩 #deps:ppStage,scj
<<detour 女孩>>
<<jump 走廊>>
===
title: 女孩
tags: detour
---
->交谈 #deps:ppStage,scj
<<detour 女孩_交谈>>
->走开 #notrack
===
3.4 同名选项的不同分支
同一个选项文字在不同条件下可以代表不同内容。内容会变的分支写 #deps: 即可。
title: 天文台
tags: hub
---
->往里看 <<if $wyjStage == 3>>
<<jump 海边>>
->往里看 <<if $wyjStage != 3>> #deps:wyjStage
<<detour 往里看_还不能进入>>
<<jump 天文台>>
===
3.5 线性剧情里的选择
linear 默认不追踪,适合一次性选择。
title: 教室苏醒
tags: linear
---
->梦到机器人
me: 我梦见我是一个机器人......
->梦到我是医生
me: 我梦见我成了一个医生......
->不记得了
me: 我不记得梦的内容了。
<<jump 教室>>
===
如果线性节点里某个选项确实需要标记,可以单独加 #track。
4. 写作检查
- 可反复返回的探索列表,优先放在
hub或detour。 - 普通探索选项不用额外标记。
- 内容会随变量变化的选项,加
#deps:变量名。 #deps:只写真正会让内容变新的变量,不要把所有相关变量都塞进去。<<if>>管显示,#deps:管刷新已探索状态。- 纯操作按钮优先加
#notrack。 - 父入口和子选项各自独立。
- 不要手写或复制
#line:标签;行标签交给 Yarn / 本地化流程生成和维护。
5. 运行时补充
本期已探索状态只保存在内存里,不进存档。开始新的 Yarn project、回主界面、执行 <<NextYarn>> 或退出游戏时会清空。同一段探索内在 hub / detour 之间来回跳转不会清空。