调整选择按钮的默认外观

如下图,在“工程设定”里有完整的选项按钮默认外观设定。
一般,选中,按下为按钮在三个状态的图片,之后则是对应的字号和颜色。
文字颜色除了平常的三种状态以外,还有“既读”设定,也就是当某个选项在选择过时,就会显示成不同颜色。
这是为了玩家进行多次游戏的时候尝试不同路线而做的功能。
当然,假如不想使用这个功能的话,把“既读”文字颜色设定成和“一般”一样就可以了。
在显示选项按钮时,也可以通过指令改变按钮图形等,但当指令里没有填写参数时,就会使用这里的默认设定。


准备选项

设定完之后我们返回“脚本编辑->打开脚本”,开始制作选择~
总之在之前的脚本的基础上继续吧。
新建一行,在指令窗口里选择“准备选项”。弹出了下面这样的窗口。

一般情况下,是游戏进行了一阵之后,才出现分支路线让玩家选择的,因此对话框和系统按钮可能都在画面上。
如果你喜欢在选择的时候让画面空白一点,可以勾选“隐藏对话框”“隐藏系统按钮”这两个选项。
如果你希望让玩家在选择的时候也能做存档等等操作,或者对话框上还要显示文字提示,就这样不改设定也没问题。
点下“确认”。


设定选项按钮位置

现在可以开始显示选项按钮了。
不过,按钮显示之前,当然需要设定一下位置。
假设我们需要显示两个按钮,在画面上的位置分别是(0,200)和(0,300)。
那么就可以这样做。
继续新建一行,选择“按钮位置”,输入第一个按钮的位置,点下确认。


添加选项按钮

现在再次新建一行,选择“选项按钮”,会弹出下面的参数输入框。
因为大部分的设定,例如“一般、选中、按下”时的按钮样式,我们都设定了默认值,所以这部分可以全部留空,只需要填写少量内容。
第一是【选项文字】,也就是要描绘在选项按钮上的,玩家可以看到的文字。
第二是【标签】和【文件】,用来指定当这个选择按钮点下后,会继续执行的脚本段。
注意:标签是必须填写的,而文件名是可选的,在不填写文件名的情况下,默认会在同一个文件内寻找对应的标签名。
如下图,这是最少需要填写的两项。

现在,重复一的操作,建立一个位置在(0,300),选项文字为“选择二”,标签为*choose2的按钮。
之后脚本应该是下面这样的。


等待选项

现在所有的准备工作都做好了,只需要再加上一条“等待选项”,就可以看到成果了。
所谓“等待选项”,意思就是显示出已经设定好的选项按钮,然后等待玩家选择。
可以设定各种各样的显示效果,不过这里就全部用默认值好了。点下“确认”。
在玩家做出选择之前,游戏会一直静止在“等待选项”这里。

接下来,既然选项设定了标签“*choose1”和“*choose2”,那么就在下面加入对应的标签和剧情吧。
还不知道怎么加标签的话,请看上一讲的内容哟~
现在脚本应该是如下图这样的感觉。


选择之后的处理-清除选项

不过,如果现在就开始测试的话,虽然可以正常出现如上的选择画面,但如果按下选项按钮,仍然会什么反应都没有。
如果你点开游戏菜单栏上面的“调试->控制台”,打开除错窗口,就可以看到这样的警告:

因为THE NVL Maker里选择按钮显示时候用到的是“里文字层1”,而平时用的对话显示是在“表文字层0”,这个设置现在还没改过来。
页和层的概念在基础教程里有,这里就再提一下。
文字和图片,设定在“表页”的时候,可以立即显示。
而设定在“里页”的时候,就可以做出各种各样的显示效果。(比如刚刚的选择按钮,默认就是渐入显示的。)

想要让文字层设定恢复正常,可以直接切换对话框等等,不过最推荐的方法则是使用如上图的指令。
它会帮你把文字层复位,并且清理掉选项按钮。
请注意需要在每个选择后跳转到的地方加入这个指令,效果如下图。

接下来记得在选择1和选择2对话完毕的时候,加上“事件跳转”,让两个选择最后能够合并到一条线上来继续剧情。(可以参考模板工程里的范例写法。)
如果不这么做的话,在显示“选择了一”之后,还会继续显示“选择了二”的对话。


选择的同时,增减好感度

你一定会遇到这样的剧情设计,就是不管选择了哪一项,台词都是一样的,但是根据选择不同,游戏里可攻略人物的好感度会上升或下降。
这是剧本偷懒的经典方式(喂)。
可是总不能因为剧本偷懒,脚本就写两段完全一模一样的内容,然后再合并吧?
就算只有数值增减的变化,也要专门写两个标签也太麻烦了一点。
这个时候就要用到“当选择按钮按下时,同时执行表达式”的功能了。
在吉里吉里中,数值变化的操作是用一些简单的代码来执行的,被称为“TJS表达式”。
……喂,也不要听到“代码”两个字就点叉啊,我保证这个简单到你会加减乘除就一定会写啊。


变量与TJS表达式

首先请回去翻一下基础教程里的“变量(变数)的概念和类型”这一章。
游戏里的好感度通常是使用 一般变量 来记录的。
为了偷懒,就假装这个游戏只有这么一个可攻略人物,TA的好感度就是 f.好感度 的值。
在游戏开始时,如果没有对这个变量做过任何操作,那么默认就是0。

假设“选择一的时候好感度+5”,“选择二的时候好感度-5”。
设定第一个按钮是上图这样的,“表达式”一栏填写的是【f.好感度+=5】。
那么第二个按钮的表达式,当然是填上【f.好感度-=5】了。
这两个表达式都是简写形式,如果写全的话,应该是如下这样:

也就是执行表达式之后,会在当前数值的基础上增加5或者减去5。


选择的同时,增减多个变数

那么,假设这个游戏有不只一个角色,但选择某个选项的时候,会导致多个角色的好感增减,这种时候要怎么写呢?
答案是……只要把表达式用半角逗号“,”隔开,就能够在表达式栏里填写多个表达式了。
例如:
f.A好感度+=2,f.B好感度+=3
另外,也推荐把表达式用括号“()”括起来,让阅读更方便一些,例如:
(f.A好感度+=2),(f.B好感度+=3),(f.C好感度-=1)


在对话中显示变量的值:方法1

有时候为了方便调试,或者游戏需要好感查询系统、角色说出玩家的自定义姓名等,变量的值就需要显示在游戏里。
我们可以直接把类似的代码插入到对话里。 这个指令有各种各样的用法,除了显示变量的值之外,也可以执行一些计算并显示结果,比如,256x256=[emb exp="256*256"]。


在对话中显示变量的值:方法2

[emb exp="TJS表达式"]在脚本编辑器里,对应的是如上图这个指令“显示变数(显示TJS式)”。
假如对话末尾没有分页等待之类的符号,在两段对话中插入这个指令也可以达到如上文代码的效果,适合实在连看到一点点代码都头大的人。
脚本编辑器里显示如下图。

总之,这就是关于选择的一切。
在游戏出现选项时,有些立刻会有很明显的剧情不同,有些则是当下剧情没有任何变化,但过了一段之后走向了完全不同的结局。
这就是在选择同时做了类似“操作好感度”这样的事,并保留到日后某个分歧点才发生作用。
下一讲将会讲到如何根据好感度让游戏走向不同路线,也就是“条件分歧”。