数组

数组是存储在一起的值/项的集合。
在 GDScript 中,数组可以包含不同数据类型的值。

  1. var example = [] # an empty array
  2. var anotherExample = [1, "hello", true] # an array with different data types

您可以从数组中检索单个元素:

  1. var example = [10, 20, 30]
  2. var firstElement = example[0] # 10
  3. var secondElement = example[1] # 20
  4. var thirdElement = example[2] # 30

数组的长度

要获取数组的长度,请使用以下size方法:

  1. var example = [ 1,2,3 ]
  2. var length = example.size()
  3. print(length) # 3

子阵列

您可以在数组中包含数组。这些被称为子阵列。

  1. var subArray = [ [1,2], [9,10] ] # an empty array
  2. # Get a value from the first subarray
  3. var subarrayValueOne = subArray[0][0] # 1
  4. var subarrayValueTwo = subArray[1][1] # 10

推送和弹出方法

要将值推送到数组的前面或后面,请使用 push 方法:

  1. var example = [ 1,2,3 ] # an empty array
  2. # Get a value from the first subarray
  3. example.push_front(0) # example = [0,1,2,3]
  4. example.push_back(4) # example = [0,1,2,3,4]

要从数组中弹出一个值,可以使用 pop 方法:

  1. var example = [ 1,2,3 ] # an empty array
  2. # Get a value from the first subarray
  3. example.pop_front() # example = [2,3]
  4. example.pop_back() # example = [3]

清空数组

有几种方法可以清除数组:

  1. 您可以分配一个空数组 ```swift var example = [ 1,2,3 ]

example = []

  1. 2. resize您可以使用该方法调整数组的大小
  2. ```swift
  3. var example = [ 1,2,3 ]
  4. example.resize(0)
  1. clear您可以使用该方法清除数组 ```swift var example = [ 1,2,3 ]

example.clear()

  1. <a name="Pr3Cs"></a>
  2. ### 复制一个数组
  3. 在 Godot 中,如果您尝试将数组传递给另一个变量,则会出现问题。<br />问题是两个变量可以访问相同的数组值。
  4. ```swift
  5. var example = [ 1,2,3 ]
  6. var anotherArray = example # anotherArray = [1,2,3]
  7. anotherArray.push_front(4)
  8. print(example) # [1,2,3,4]

为避免此问题,您将需要实现深拷贝或浅拷贝。

浅拷贝

浅拷贝复制除子数组外的数组。
这意味着所有嵌套数组和字典都将与原始数组共享。
浅拷贝使用duplicate在括号内传递 false 值的方法。

  1. var example = [ 1,2,3, [1,2] ]
  2. var anotherArray = example.duplicate(false) # anotherArray = [1,2,3,[1,2]]
  3. anotherArray.push_front(4)
  4. print(example) # [1,2,3,[1,2]]
  5. anotherArray[3][0] = 100
  6. print(example) # [1,2,3,[100,2]]
  7. print(anotherArray) # [1,2,3,[100,2],4]

深拷贝

深拷贝复制数组,包括子数组。
这意味着所有嵌套数组和字典都不会与原始数组共享。
要进行深层复制,请使用带有括号内传递duplicate的值的方法。true

  1. var example = [ 1,2,3, [1,2] ]
  2. var anotherArray = example.duplicate(true) # anotherArray = [1,2,3,[1,2]]
  3. anotherArray.push_front(4)
  4. print(example) # [1,2,3,[1,2]]
  5. anotherArray[3][0] = 100
  6. print(example) # [1,2,3,[1,2]]
  7. print(anotherArray) # [1,2,3,[100,2],4]