Gdscript 错误或奇怪的行为

Gdscript Bug or strange behaviour

我注意到 gdscript 中有一些奇怪的行为。

当你声明变量时

var value = [0, 0, 0, 0, 0]
var values = []

并将一个附加到另一个

values.append(value)

然后更改数组中的内容

value[1] = 1

如果您随后打印结果 [print(value, values)]

你得到

prints: [0, 1, 0, 0, 0][[0, 1, 0, 0, 0]]

预期行为

prints: [0, 1, 0, 0, 0][[0, 0, 0, 0, 0]]

发生的事情是,在 GDScript 中,当您将数组 value 附加到 values 时,您实际上是将其引用附加到数组。所以你最终得到一个数组 values,它的第一个条目是对数组 value 的引用。因此,当您更改 values 中引用的值时,您也会更改原始变量的值。

如需进一步阅读,请查看此 wikipedia page