跳至主要內容

对话

Mahiru大约 5 分钟

对话

注意

每条对话的冒号、分号应当为英文字符!

编写角色对话的方式非常简单,且与自然语言几乎无异。

相关信息

在字体为中和大时,文本框显示2行,而字体为小时,显示3行。

基本角色对话

首先,使用记事本或 VS Code 、sublime 等文本编辑器,打开游戏资源目录下 scene 文件夹中的 start.txt,然后你就可以开始编写你的第一条对话了。

编写角色对话的方法非常简单,你只需要输入 角色:对话;

示例:

雪之下雪乃:请用茶;
由比滨:啊,谢谢;
小町:谢谢雪乃姐!;
一色:谢谢学姐。;

在每条对话/剧本后,使用分号作为结束。(如果不写分号有时候也行,但是作者还是建议加上分号以防止 bug)。

连续对话

如果你的多条对话没有改变角色名称,你可以使用连续对话,而可以省略角色名称,再在你需要的时候使用:

雪之下雪乃:你到得真早;
; // 此时,对话的角色名称仍然是 “雪之下雪乃”
对不起,等很久了吗?;
比企谷八幡:刚到而已;

旁白

如果你想要创建没有角色名称的旁白对话,请在冒号前留空(但不能省去冒号):

:这是一句旁白;

黑屏文字

在许多游戏中,会以黑屏显示一些文字,用来引入主题或表现角色的心理活动。你可以使用 intro 命令来演出独白:

intro:回忆不需要适合的剧本,|反正一说出口,|都成了戏言。;

独白的分拆以分隔符(|)来分割,也就是说,每一个 | 代表一个换行。在实际演出中,上面的文字会变成:

回忆不需要适合的剧本,
反正一说出口,
都成了戏言。

如果你想要在独白结束后保持独白界面,而不是继续游戏流程,请使用 -hold 参数

intro:回忆不需要适合的剧本,|反正一说出口,|都成了戏言。 -hold;

获取用户输入

使用getUserInput 指令来获取用户输入,并写入变量,例如:

getUserInput:name -title=如何称呼你 -buttonText=确认; 将用户输入写入 name 变量中

其中,title 参数是提示的文本,buttonText 是确认按钮的文本

变量插值

可以在语句中使用 {} 语法来进行变量插值,将某个变量传入语句中,例如:

WebGAL:很高兴遇见你,{name}!

变量插值也适用于人物名称,例如:

{name}:我也最喜欢 WebGAL 了!;

注音

在对话文本中注音是日语游戏中的一种很常见的演出效果。因为日语中经常会出现一些写法和读法不一致的词语。

注音的语法是 [要注音的词](注音)

示例:

『[笑顔](えがお)』なんて、『[笑う](わらう)』なんて、[誰](だれ)でも[出来](でき)るもん…!

文本拓展语法

在 WebGAL 4.5.3 中,加入了“文本拓展语法”功能。该语法可以为部分文字添加文本样式。

文本拓展语法是对某段特定文本的增强。被[]包裹的,且后面跟随着()作为文本增强描述的文本是符合文本拓展语法定义的文本。

简单来说,形如以下形式:

(文本)[style-alltext=font-style:italic\; style=color:#66327C\; ruby=wen ben]

这代表这段文本的字体大小是偏小的,并应用了加粗,颜色为 #005CAF,并具有注音和提示。

对于文本拓展语法中的不同参数,使用空格分开,并且形式总是 argk=argv 这样的形式

特别需要注意的是,由于 ; 是 WebGAL 的注释语法,所以在文本拓展语法中应用 ; 需要加 \ 转义,成为 ;

不同参数对应的样式作用范围

text-enhance
text-enhance

在先前的示例语法中,注意到,有两个不同的参数可以为文本定义样式:stylestyle-alltext

为文本样式区分作用域,是因为 WebGAL 为了为文本提供更好的描边效果,将一个字分为了三层——文本、描边和占位。

文本是最上层的部分,也是主要部分。描边在文本下方,被文本覆盖,用于提供白色描边且不至于破坏文字的内部形状。最下层是提供定位的透明占位符。

简而言之,如果你只需要修改文本颜色,只需要使用 style 参数。如果你想要应用斜体、文本大小、内外边距等效果,你则需要同时为 style-alltext 设置效果。

特别注意:由于4.5.3 版本中的一个 bug,目前不能只应用 style-alltext 参数,因为只有检测到 style= 这样的语法,才会启动文本拓展语法

与注音的兼容性

为了兼容先前的语法,如果没有识别到 style= 这样的语法,则我们会将 ()[] 语法视为注音。

如果使用了新的文本拓展语法,注音则写在 ruby= 参数里,上面的示例也说明了这一点。

关闭文本框

有时候,为了一些特殊的演出效果,可能你希望临时关闭文本框,所以你可以使用以下指令来关闭文本框:

setTextbox:hide; // 关闭文本框

setTextbox 指令的值为 hide 时,会关闭文本框,且用户无法以任何方式打开。如果想要重新显示文本框,请再次调用此命令,并输入除hide以外的任意值。

setTextbox:on; // 可以是除 hide 以外的任意值。

结束游戏并返回到标题

如果你想要在剧情结束后结束游戏并返回到标题,请使用:

end;

这样,就可以使游戏返回标题界面。

电影模式(测试功能)

使用 filmMode:enable; 来开启电影模式。
使用 filmMode:none; 来关闭电影模式。