文本显示与对话控制
最基础的对话
在 scenario 文件里,标签之外的内容就是要显示的文本:
[chara storage="chara/hero.tlg" layer=1]
hero:你好,欢迎来到我的世界。
[click]
今天天气真不错。
[click]
引擎会自动逐字显示文本(打字机效果),一整段文字显示完后等待用户点击或按键,然后继续下一段。
说话人名字框
吉里吉里2 默认有一个名字框(叫「namebox」或「messageon」),用来显示当前说话角色的名字。名字和正文的分隔符默认为 :(全角冒号)。
hero:→ 名字框显示「hero」,正文显示「你好」- 如果你想自定义名字显示,用
[msg name="真正的显示名"]标签
打字速度控制
; 设置全局打字速度(毫秒/字)
[tjs]
KAG.manager.messageSpeed = 50; // 50ms 每字 = 快
KAG.manager.messageSpeed = 200; // 200ms = 慢
; 或者直接显示全部文字不逐字
[nowait]
这一行会一次性全部显示完,不打字。
KAG 还支持在游戏中通过选项让玩家自己调打字速度,这需要配合设置界面实现。
清空文字框
; 清空当前文字框
[msg clear]
; 清空并显示新内容
[msg clear]
新的文字从这里开始。
多行文本
普通文本可以自然换行:
这是一段较长的对话,
引擎会按窗口宽度自动换行。
段落之间空一行会变成回车换行。
; 也可以手动控制换行
[msg str="这是第一行\n这是第二行"]
文本特效标签
颜色
[msg color="#ff0000"]红色文字[/msg]
[msg color="blue"]蓝色文字[/msg]
大小
[msg size=24]24号字[/msg]
[msg size=small]小字[/msg]
[msg size=large]大字[/msg]
加粗/斜体(有限支持)
吉里吉里2 的文字渲染器比较基础,不像 HTML 那样支持完整的富文本。常见做法是用不同大小和颜色来区分。
逐字显示但中途加速
按 Ctrl + 回车(或游戏中自定义的跳过键)可以让打字效果瞬间完成。
自动前进(无人值守模式)
; 自动播放对话,每段等待 2000ms
[msg auto time=2000]
; 取消自动播放
[msg auto time=0]
点击/等待控制
; 等待用户点击
[click]
; 等待指定毫秒数,不受用户输入打断
[wait time=1000]
; 等待用户点击或指定时间(先到先过)
[click time=3000]
; 跳过未显示的文字,立即继续
[skip]
历史记录/回溯
吉里吉里2 原生支持对话历史(backlog):
; 调用历史记录界面(通常在点击菜单里)
[tjs]
KAG.manager.showBacklog();
文本框的高级用法
多文字框
可以同时开多个文字框(不同位置、不同大小),用来做旁白框、系统提示框等:
[tjs]
var msg2 = KAG.manager.createMessageLayer();
msg2.moveTo(100, 400);
msg2.width = 400;
; 在第二个框里写内容
[msg layer=2]旁白内容……
文字排版
- 引擎自动按文字框宽度换行
- 标点尽量留在行尾(日语排版习惯)
- 中文排版可能有行尾标点问题,需要手动调换行或换字体
字体
默认字体是 Windows 系统字体。可以通过 TJS2 代码修改:
Layer.current.font = "Microsoft YaHei";
Layer.current.fontSize = 16;
Layer.current.fontColor = 0xFFFFFF;