跳转至

基本语法

AVScript 的基础语法和 JavaScript 几乎一致。本章并不会完全讲解脚本语法,仅做抛砖引玉,如需了解更多,请自行学习 JavaScript.

建议

可通过 https://www.w3schools.com/js 学习一点 JavaScript 的语法基础。

变量声明

我们可以在脚本中定义一个块级作用域的变量,仅存在于运行期,并不会对游戏存档里的数据造成任何改变。

使用 let 关键词定义 变量

变量初始化之后可以重新赋值。

1
2
3
4
5
6
let name = "李狗蛋";
let age = 42;

// 重新赋值
name = "史诗级李狗蛋";
age = 66;
使用 const 关键词定义 常量

有时候为了我们定义的变量在后面不能再被重新赋值,则可以把它定义为常量。

1
const PI = 3.1415926;

函数

我们可以在 AVGScript 中使用 函数(Function).

但需要注意的是,我们不能使用 function 关键字来定义函数。在 AVGScript 里,我们仅能使用 箭头函数(Arrow Function)

为什么这样设计呢?

AVGScript 的设计方向是尽可能精简,但又能保留 JavaScript 的语言特性,在权衡利弊之下,并且在同一个脚本文件(.avs)里,我们希望脚本是线性的,是不具备块级作用域的,也不应该存在 .this 对象。因此我们选择了去掉 function,选择了箭头函数。

函数定义
1
2
3
4
5
6
7
8
// 定义一个箭头函数
const say = (content) => {
  text.show(content, {
    name: "李狗蛋"
  });
}

say("你好,旅行者。");

Note

在 AVGScript 中使用函数并不是必须的,API 的设计宗旨是尽可能保证足够小的调用粒度。

但如果你希望把某些代码片段封装以复用,可考虑它挂在 $data 对象下,这样您在任何脚本里都可以访问到这部分共用的代码片段。

为了更清晰地组织游戏功能,我们建议使用 flow.call() 方法在 .avs 文件之间进行流程跳转。

当然,为了保证语言层面有足够的自由,并且在有足够的经验和把握的情况下,你仍然可以在 AVScript 中使用函数。这个需要开发者自行把握。

If 条件语句

基本的逻辑判断语句。

1
2
3
4
5
6
7
let foo = 42;

if (foo > 40) {
    // do something
} else {
    // do something else
}