From f759c8cfde09c266519afd3f4d197b3acf6645d5 Mon Sep 17 00:00:00 2001 From: Ding Yuntian <1491671119@qq.com> Date: Tue, 26 May 2026 15:49:16 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=E9=80=89=E9=A1=B9?= =?UTF-8?q?=E5=B7=B2=E6=8E=A2=E7=B4=A2=E8=BF=BD=E8=B8=AA=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E8=AE=A8=E8=AE=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Docs/选项已探索追踪设计讨论.md | 153 +++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 Docs/选项已探索追踪设计讨论.md diff --git a/Docs/选项已探索追踪设计讨论.md b/Docs/选项已探索追踪设计讨论.md new file mode 100644 index 000000000..2a22db720 --- /dev/null +++ b/Docs/选项已探索追踪设计讨论.md @@ -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 +``` + +`<>` 只控制选项是否显示;`#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` 之间来回跳转不会清空。 +