跳至主要內容

变量

Mahiru大约 4 分钟

变量

注意

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

使用变量

设置变量:

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;

高级用法(>=4.5.4

使用内置变量进行更为高级的操作,如对配置变量进行修改,根据内置变量进行指定条件的逻辑运行等。

WebGAL 目前内置变量域有两个:stageuserData

提示

stage运行时内置变量userData存档内置变量

stage 可在 WebGAL 编辑器下面的state选项卡查看有哪些属性,userData则是可以在开发者工具中indexedDB查看。

使用$可以访问他们,如获取BGM的值:

setVar:a=($stage.bgm.volume);
WebGAL:当前的BGM音量为{a};

当然,你也可以直接在对话中使用它:

WebGAL:当前的BGM音量为{$stage.bgm.volume};

注意

获取单值变量时需要使用括号包裹,但进行数学运算时不需要。

我们还可以访问config.txt中的全局变量:

setVar:title=(Game_name);
WebGAL:当前的游戏标题为{title};

修改也不例外,当要修改游戏标题为新游戏标题时,setVar的变量名称需要设置为我们将修改的变量名称

global参数表示我们要修改的是配置变量:

setVar:Game_name=新游戏标题 -global;
WebGAL:当前的游戏标题为{Game_name};

注意

不加global则会赋值到游戏内变量,请注意何时使用global参数。

提示

可以修改的原始配置变量Title_imgTitle_bgmGame_nameGame_key
想要恢复则可以在游戏选项中使用清空所有数据即可恢复。

当然,你也可以在config.txt中创建一个自定义配置变量,如 创建一个版本号:

Game_name:欢迎使用WebGAL!;
Game_key:f60ad5725c1588;
Title_img:WebGAL_New_Enter_Image.png;
Title_bgm:s_Title.mp3;
Textbox_theme:imss;
; 增加版本号
version:1;

那么我们就可以在脚本里面对它进行获取,修改等操作:

setVar:v=(version);
WebGAL:当前的版本号为{v};
setVar:version=version*2 -global;
WebGAL:当前被修改的版本号为{version};

注意

config.txt暂未做特殊符号的转义处理。