Arrays

数组|Arrays

根据 2022 年 9 月的更新,Choicescript 现在支持一组与数组相关的新命令:*create_array*temp_array*delete_array

使用 *create_array 时,你需要提供一个变量名、要创建的变量数量以及每个变量的值,该命令会自动创建一系列变量,每个变量名称末尾都会带有一个下划线和索引号以示区分。你可以将其视为一种快捷方式,用于批量创建名称相似且值相同的变量,而无需逐一输入。

例如,如果你有多个角色拥有相同的属性,可以使用以下命令:

*create_array intelligence 5 50

执行此命令的效果类似于执行以下操作,但无需手动输入所有内容:

*create intelligence_1 50

*create intelligence_2 50

*create intelligence_3 50

*create intelligence_4 50

*create intelligence_5 50

您也可以使用语法 arrayname[index]arrayname_index 来查看或更改变量。其中 index 部分本身可以是另一个变量,只要该变量是数字即可。

*set intelligence[1] 80

*set intelligence_2 30

*temp current_character 3


Character 1's strength is ${intelligence_1}.

Character 2's strength is ${intelligence[2]}.

The current character's intelligence is ${intelligence[current_character]}.

等等。

尽管上面的例子显示的是数字,但数组可以存储任何类型的变量:数值型、布尔型或字符串型。

*Temp_Array*Delete_Array*Temp_Array and *Delete_Array

*temp_array 的作用与 *create_array 相同,只是它是临时版本。也就是说,该数组仅适用于当前场景文件,不会在其他地方生效。

*delete_array 则类似于针对常规变量的 *delete 命令,它将删除指定的数组。

2022 年之前的数组实现方案|Pre-2022 Array Method

circle-info

以下内容仍然适用,并且可以在较新版本中使用。它只是不如新的数组命令方便。

ChoiceScript 支持一种数组语法,用于访问一系列相关数据点中的特定条目。如果在变量名后使用方括号 [],第二个变量的值将通过下划线连接。请看这个示例。

假设你的游戏中有多个角色。你可以按如下方式存储他们的力量值:

然后,你可以使用语法 strength[index] 来访问任意一个值。下满的代码将打印出“当前力量值:80”。

方括号 [] 会被直接替换为下划线加变量索引值,因此这等同于以下任一写法:

这在循环中或当输出内容取决于变量时非常实用。

请注意,所有条目(本例中的 strength_0、strength_1、strength_2)必须在使用前通过 *create*temp 命令创建。读取或写入 strength[3] 将会报错。

其他用法|Additional usages

括号内的变量也可以是字符串。这将允许开发者将相关功能集中管理(类似于其他语言中结构体或类的字段)。参见示例:

已知限制|Known limitations

创建时,变量名必须完整拼写——不能在创建时使用数组语法。以下写法都会失败

(王洛木:示例代码中的双斜线并不能真的在 ChoiceScript 用作单行注释。)

这意味着数组的最大大小必须在编写场景时就确定,且之后无法更改。例如,如果你计划最多有十个角色,你需要这样编写:

之后你将无法再添加更多角色。