让角色说话
对话是视觉小说的核心。本章你将学会用 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=true | Skip 模式下仍需手动点击 |
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"现在点击标题画面的「开始故事」按钮,就能看到过渡动画 + 开场对话了。
下一步
对话有了!接下来学习分支与选择,让玩家做出决定。