锚点与修饰符体系 (Anchor-Decorator)
本页遵循 Ktory 设计原则,实现边界与长期目标以该原则及其权威文档为准。
锚点与修饰符体系
Section titled “锚点与修饰符体系”锚点形成可执行的拍或选项;修饰符 .tag(args) 为其携带参数。拍负责确定剧情停在哪里,演出效果与执行时长由宿主实现。
| 书写方式 | 解析结构 | 含义 |
|---|---|---|
角色: 台词 |
TextStep |
有说话人的文本拍 |
: 旁白 或无保留前缀的正文 |
TextStep |
匿名文本拍,Speaker 为空 |
#do,下方无子项 |
DirectiveStep |
无文本指令拍,仍会停止 |
#choice,下方有缩进的 * / + 子项 |
ContainerStep |
选项容器 |
# 行由子项结构区分指令与容器;choice 不是解析器保留关键字。自定义名称的扩展支持需要核查实际运行时,不能只凭名称就假定业务 Handler 已存在。
爱丽丝: 真是不可思议…… .expression(surprised) .next(0.5)
#do .sfx("door")修饰符吸附到所属锚点;分支正文和容器子项依缩进划定。.tag 与 .tag() 都无参,.tag(0) 则明确传递整数零。参数可以按位置或名称传入,例如 .bgm("main", volume=0.6)。这些名称不会自动提供音频或立绘实现。
配套表现时序约定以秒为单位:.next(0.5) 从文字显示完毕后停留半秒并请求推进;.skippable(false, 3) 只限制前三秒的文字快显。核心解析这些声明,宿主或配套表现控制器落实时序。
.wait(t) 只规定全文显示后的最低停留时间,不会自动推进。期间点击直接丢弃,到期后须重新点击;省略参数的 .wait 使用预估阅读时间。.next(t) 在全文显示后计时并请求自动推进,省略参数等于 0 秒。
两者同时计时,书写顺序不影响结果:.wait(2).next(2) 与 .next(2).wait(2) 都是 2 秒后自动推进;.wait(2).next(5) 在第 5 秒自动推进,但第 2 秒起可点击提前继续;.wait(5).next(2) 必须等到第 5 秒。.wait.next 表示预估阅读停留结束后自动推进。#AUTO 或宿主自动播放也可提供自动推进策略,但仍须遵守最低停留。
.skippable(false[, t]) 锁定期间的点击同样直接丢弃,不在解锁或全文显示后补执行。
支持 *斜体*、**粗体**、~~删除线~~ 和 [书桌]{desk}。当前脱糖输出为标签字符串,例如 <ruby="desk">书桌</ruby>,并非独立的 Ruby 结构化对象。原生标签也会透传,具体标签能否显示由渲染器决定。
使用反斜杠转义需要按字面显示的保留字符。不要把块级 Markdown 标题、列表或代码围栏当作对白结构。跨 Web 与 Unity 的富文本显示需要分别验证。
