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