docs: 添加选项已探索追踪设计讨论

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