Массивы используются для хранения списков различных элементов, таких как числа или объекты. В большинстве случаев они одномерные, но могут быть многомерными для хранения данных, связанных с сетками или трехмерным пространством.
Каждый элемент массива ссылается на целочисленное индексное значение, начиная с нуля для первого элемента.
Массив представляет собой объект с различными вспомогательными функциями для работы с ним, такими как добавление новых значений, получение размера массива, сортировка значений и перемешивание значений и так далее.
Поскольку это объект, он передается в функции по ссылке, поэтому изменения, внесенные в его элементы внутри вызова функции, напрямую относятся к массиву, ссылка на который была передана функции.
Эти примеры кода помогут вам понять, как использовать массивы в GDScript:
extends Node2D
func _ready():
# Ways to create an array instance
var a = Array()
var b = []
var c = ["a","b","c"]
# Add some items to array 'a'
a.append("Item 1")
a.append("Item 2")
# Pass array by reference to a function
change(a)
# Confirm that changes were made
print(a[0])
# Print the size of array 'b'
print(b.size())
# Shuffle the values of array 'c'
c.shuffle() # This function doesn't return a value
# Check that the element order was changed
print_elements_of(c)
func change(a):
a[0] = 1
func print_elements_of(array):
# Here we are using one of the Pool array types
print(PoolStringArray(array).join(""))
Чтобы узнать больше о доступных вспомогательных функциях (методах), вы можете посмотреть документацию по классу Array.
Также существует класс PoolByteArray, предназначенный для больших наборов данных. Он хранит массив единого типа данных без опасений о разбиении данных на куски в памяти. Но, вероятно, вам не нужно беспокоиться об этом на данный момент.
Тем не менее, существуют различные типы массивов Pool Array, которые имеют более продвинутые функции по сравнению с обычными массивами. Они позволяют объединять массивы, объединять строковые элементы в одну строку, например.
Большую часть времени у нас есть массивы фиксированного размера, или мы добавляем новые элементы в конец массива. Однако есть продвинутые варианты использования массивов, такие как буферы, где мы можем добавить значение в один конец массива и удалить значение из другого конца. Это может быть реализацией буфера FIFO (First In First Out). Или реализация стека (FILO) (First In Last Out Buffer).
Таким образом, существуют методы массивов, позволяющие нам добавлять, вставлять и удалять элементы массива. И все типы массивов имеют методы для преобразования из одного типа в другой для доступа к дополнительным функциям.