跳至主要內容

变量

Mahiru大约 2 分钟

变量

注意

在你弄清楚如何使用场景跳转和分支跳转之前,请不要轻易使用变量系统,这可能会令你感到迷惑!

使用变量

设置变量:

setVar:a=1; // 可以设置数字
setVar:a=true // 可以设置布尔值
setVar:a=人物名称 // 可以设置字符串

设置随机数,请使用 random()

setVar:a=random();

随机数是一个0-1区间的数字,如果你需要指定随机数范围,你需要进行一些算数运算。比如,你想要5-10之间的随机数,你需要进行如下运算:

setVar:a=5+a*5;

如果先前你定义过其他变量,也可以在设置变量时使用。

setVar:a=1;
setVar:b=a+1;

条件执行

在语句后加上 -when=(condition) 参数,可以根据条件判断当前语句是否要执行。

例如:

setVar:a=1;
; // 当 a 大于 1 时跳转到场景 1
changeScene:1.txt -when=a>1;
; // 只有 a 为 1 时才跳转,注意相等运算符是 ==
changeScene:2.txt -when=a==1;
; // 如果 a 小于 1,那么上面的语句不执行,自然就执行这一句了
changeScene:3.txt;

提示

= 是赋值符号,不可用于条件判断,==是相等运算符。

任何语句都可以加上 -when 参数来控制是否执行。通过组合 -when 参数和 jumpLabel callScene changeScene,你可以实现带条件判断的流程控制。

获取用户输入

使用getUserInput 指令来获取用户输入,例如:

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

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

变量插值

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

setVar:name=WebGAL;
setVar:engine=WebGAL;
{name}:欢迎使用 {engine}!这是一款全新的网页端视觉小说引擎。;

长效变量(全局变量)

WebGAL 的普通变量是跟随存档的,也就是说,任何变量只存在于当前的游戏场景中,只有存档才能将其保存下来,读档将其恢复。

为了解决可能存在的作者希望设置多周目的问题,提供长效(全局)变量,一旦设置,则在整个游戏中生效,除非用户清除全部数据。

加上 -global 参数可以设置长效(全局)变量

setVar:a=1 -global;

这样就设置了一个不随存档读取而改变的变量。

使用例:

jumpLabel:turn-2 -when=a>0;
setVar:a=1 -global;
一周目;
changeScene:一周目剧情.txt;
label:turn-2;
二周目;
changeScene:二周目剧情.txt;