Gdscript 错误或奇怪的行为

问题描述

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

声明变量时

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

并将一个附加到另一个

values.append(value)

然后更改数组中的某些内容

value[1] = 1

如果你再打印结果 [print(value,values)]

你得到

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

预期行为

prints: [0,0]]

解决方法

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

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