跳转至

变量作用域机制

在 AVGPlus 中,有三种不同作用域的变量对象,并且可以直接在脚本中访问。分别是 全局临时变量存档变量周目变量

名称 对象变量名 作用域
全局临时变量 $data 游戏进程存在时一直存在于内存中,游戏结束后会清除,可跨脚本使用
存档变量 $archive 会随每次执行存档时,保存到存档文件中,下次读档时加载
周目变量 $persistence 永久储存的数据(除非游戏卸载),不管存档和任意时候,都是独立的

1. 全局临时变量

全局临时变量 的对象名为 $data, 它是一个可以跨脚本的变量,在游戏进程启动之后,会始终存在,直至游戏进程结束会被清除。它本身是个 Object, 可以赋值任意内容。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// 定义一个变量
$data.testValue = "测试变量";

// 定义一个对象
$data.testObj = {
  a: 42,
  b: "some strings",
};

// 还可以定义一个方法
$data.doSomething = () => {
  text.show("你为什么这么熟练啊……");
};

// 调用对应的方法
$data.doSomething();

我们可以在任意脚本中使用 $data,所有脚本都共享同一个 $data。它是**全局唯一的**。

伴随游戏结束,$data 的内容就会被清除,不会永久保存。

使用场合

一般用于存放需要跨脚本的临时变量,如定义一些跨脚本的公共的方法和公共的变量等,比如定义一个角色的名字(如:$data.charName="李狗蛋"),可以在所有脚本中通过 $data.charName 特定的变量访问到这个名字。

2. 存档变量

存档变量 的对象名为$archive,它的用法和全局临时变量完全一致。区别在于,它的内容会随着保存到存档文件中。每执行存档操作时,$archive 的内容就会被保存到存档文件中。同理,下次读档时,对应的内容也会被重新加载到 $archive

使用场合

存档变量一般用于保存一些可能随游戏故事进程变化的变量,最典型的比如说角色的 好感度,可以储存到 $archive 中。

3. 周目变量

周目变量 的对象名为$persistence. 周目变量会永久随游戏保存,除非卸载游戏,否则它会一直存在。周目变量在任意字段赋值,或出现变更后,会自动把数据写到硬盘上。

使用场合

这个对象的名称应该很能说明问题啦~ 一般用来储存一些全局成就类的数据。比如部分有多周目结局的游戏,可通过该变量来储存周目的解锁状态。