Skip to content

让角色说话 ​

对话是视觉小说的核心。本章你将学会用 say 让角色说话,配置角色样式,并理解打字机效果。

say 语句 ​

dsl
say "你好,旅人。" speaker="老张"
  • 第一个参数是对话文本(必须用引号包裹)
  • speaker= 是说话者名字(可选)

运行后,画面底部会弹出一个对话框,文字逐字显示——这就是打字机效果。

点击推进 ​

打字机显示时:

  • 点击——如果正在打字,跳到完整文本;如果已完成,进入下一句
  • 空格 / 回车——同上

角色定义 ​

用 character 语句预定义角色样式,之后 say 只需用 key 引用:

dsl
character "lao_zhang" name="老张" color="#FFAA00" font="Microsoft YaHei"

say "你好啊!" speaker="lao_zhang"
say "这镇子不太平。" speaker="lao_zhang"
参数说明
name显示名
color说话者名字颜色
font字体
side侧脸图路径(可选)
screen对话框模板名(可选,见对话框模板教程)

speaker 的两种用法

  • speaker="老张"——直接写字面名字
  • speaker="lao_zhang"——写 character 定义的 key,引擎自动查找 name/color/side

推荐用 character key,方便统一管理角色样式。

变量插值 ​

对话文本中可以用 {变量名} 引用变量:

dsl
define "player.name" "旅人" once

say "你好,{player.name}!" speaker="lao_zhang"

内联标记 ​

对话文本支持富文本标记,用 {} 包裹:

dsl
say "这是{b}粗体{/b},这是{i}斜体{/i}。" speaker="旁白"
say "{color=#FFD700}金色文字{/color},{size=24}大字{/size}。" speaker="旁白"
标记效果
{b}...{/b}粗体
{i}...{/i}斜体
{u}...{/u}下划线
{color=#xxx}...{/color}颜色
{size=N}...{/size}字号
{font=xxx}...{/font}字体

标记支持嵌套:{b}{color=#FFD700}金色粗体{/color}{/b}

标签暂停 ​

用 {w} 和 {p} 在对话中插入暂停点,点击后继续:

dsl
say "前半句{w}后半句" speaker="旁白"
  • {w}——暂停打字机,点击继续
  • {p}——同上,常用于段落分隔
  • {fast}——跳过后续打字机,直接显示到末尾

say 的其他参数 ​

参数说明
clickable=true对话期间允许点击 UI 元素(默认禁用遮罩)
instant=true跳过打字机,直接显示完整文本
noskip=trueSkip 模式下仍需手动点击
template="center"这一句使用指定对话框模板

动手:加一段开场对话 ​

在 title_main.story 末尾添加:

dsl
label intro:
  transition "fade" duration=1.0
  character "narrator" name="旁白" color="#AAAAAA"
  say "迷雾笼罩着这座小镇。" speaker="narrator"
  say "你踏着暮色而来,带着满身的尘土。" speaker="narrator"
  say "前方是一座陌生的{b}{color=#FFD700}城镇{/color}{/b}。" speaker="narrator"

现在点击标题画面的「开始故事」按钮,就能看到过渡动画 + 开场对话了。

下一步 ​

对话有了!接下来学习分支与选择,让玩家做出决定。

基于 .NET 10 + Avalonia 12 · Apache-2.0 License