问题描述
我注意到 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