跳转到内容

Speaker 默认修饰符

在 @speaker 声明下缩进写默认修饰符。每句该说话人的对白会应用这些默认值,本句同名修饰符整组覆盖默认,下一句重新从默认值计算。

@speaker alice: zh="爱丽丝" | en="Alice"
.portrait(normal).emotion(calm).voice(soft)
alice: 默认呈现。
alice: 本句覆盖。 .portrait(happy).emotion(happy)
Alice: 再次使用默认值。

定义只在当前文件生效,同一 speaker 的 ID 和所有名字别名共用;声明顺序不影响引用。默认区不产生执行拍,不影响旁白、指令拍或选项项;选项分支中的该 speaker 对白仍会使用默认。

按修饰符名称(不区分大小写)整组替换,不逐个合并参数。同名修饰符在本句出现多次时都保留。最终顺序是未被覆盖的默认组,再接本句修饰符;TextPayload.Tags 已是合并结果,接入端不需要再次合并。

默认区允许任意修饰符,等同在每句显式书写。.wait/.next/.loop 保留原有规则;若你把 .sfx(bell) 定义为播放一次铃声,放入默认区便会每句播放一次。切语言不会再次触发这些动作。

本轮没有取消默认值语法。资源名和动作的含义由宿主实现;默认修饰符不会自动生成 Unity 立绘绑定。呈现端应按当前拍的完整有效配置显示表情,无局部值也无默认值时清除旧表情;不要把“没有标签”误当成“沿用上一句”。这个显示规则不要求省略 BGM 时停止音乐。

匿名指令锚点 # 可以直接接修饰符,例如 #.sfx("wind.ogg").wait(seconds=1).next()。网站、Reader 源码编辑框与 VS Code 均使用同一份 TextMate grammar;不同主题可以采用不同配色。