PackedVector3Array

Упакованный массив Vector3.

Описание

Массив, специально разработанный для хранения Vector3. Плотно упаковывает данные, поэтому экономит память для больших размеров массива.

Различия между упакованными массивами, типизированными массивами и нетипизированными массивами: Упакованные массивы, как правило, быстрее итерируются и изменяются по сравнению с типизированным массивом того же типа (например, PackedVector3Array по сравнению с Array[Vector3]). Кроме того, упакованные массивы потребляют меньше памяти. С другой стороны, упакованные массивы менее гибкие, поскольку они не предлагают столько удобных методов, как Array.map(). Типизированные массивы, в свою очередь, быстрее итерируются и изменяются, чем нетипизированные массивы.

Примечание: Упакованные массивы всегда передаются по ссылке. Чтобы получить копию массива, которую можно изменять независимо от исходного массива, используйте duplicate(). Это не касается встроенных свойств и методов. В этих случаях возвращаемый упакованный массив является копией, и его изменение не повлияет на исходное значение. Чтобы обновить встроенное свойство этого типа, измените возвращаемый массив, а затем снова присвойте его свойству.

Примечание

Существуют заметные различия при использовании данного API с C#. Подробнее см. API различия C# и GDScript.

Конструкторы

PackedVector3Array

PackedVector3Array()

PackedVector3Array

PackedVector3Array(from: PackedVector3Array)

PackedVector3Array

PackedVector3Array(from: Array)

Методы

bool

append(value: Vector3)

void

append_array(array: PackedVector3Array)

int

bsearch(value: Vector3, before: bool = true) const

void

clear()

int

count(value: Vector3) const

PackedVector3Array

duplicate() const

bool

erase(value: Vector3)

void

fill(value: Vector3)

int

find(value: Vector3, from: int = 0) const

Vector3

get(index: int) const

bool

has(value: Vector3) const

int

insert(at_index: int, value: Vector3)

bool

is_empty() const

bool

push_back(value: Vector3)

void

remove_at(index: int)

int

resize(new_size: int)

void

reverse()

int

rfind(value: Vector3, from: int = -1) const

void

set(index: int, value: Vector3)

int

size() const

PackedVector3Array

slice(begin: int, end: int = 2147483647) const

void

sort()

PackedByteArray

to_byte_array() const

Операторы

bool

operator !=(right: PackedVector3Array)

PackedVector3Array

operator *(right: Transform3D)

PackedVector3Array

operator +(right: PackedVector3Array)

bool

operator ==(right: PackedVector3Array)

Vector3

operator [](index: int)


Описания конструктора

PackedVector3Array PackedVector3Array() 🔗

Создает пустой PackedVector3Array.


PackedVector3Array PackedVector3Array(from: PackedVector3Array)

Создает PackedVector3Array как копию заданного PackedVector3Array.


PackedVector3Array PackedVector3Array(from: Array)

Создает новый PackedVector3Array. При желании вы можете передать общий Array, который будет преобразован.

Примечание: При инициализации PackedVector3Array элементами он должен быть инициализирован Array значений Vector3:

var array = PackedVector3Array([Vector3(12, 34, 56), Vector3(78, 90, 12)])

Описания метода

bool append(value: Vector3) 🔗

Добавляет элемент в конец массива (псевдоним push_back()).


void append_array(array: PackedVector3Array) 🔗

Добавляет PackedVector3Array в конец этого массива.


int bsearch(value: Vector3, before: bool = true) const 🔗

Находит индекс существующего значения (или индекс вставки, который поддерживает порядок сортировки, если значение еще не присутствует в массиве) с помощью бинарного поиска. При желании можно передать спецификатор before. Если false, возвращаемый индекс следует после всех существующих записей значения в массиве.

Примечание: Вызов bsearch() для несортированного массива приводит к неожиданному поведению.

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN.


void clear() 🔗

Очищает массив. Это эквивалентно использованию resize() с размером 0.


int count(value: Vector3) const 🔗

Возвращает количество раз, когда элемент находится в массиве.

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN.


PackedVector3Array duplicate() const 🔗

Создает копию массива и возвращает ее.


bool erase(value: Vector3) 🔗

Удаляет первое вхождение значения из массива и возвращает true. Если значение не существует в массиве, ничего не происходит и возвращается false. Чтобы удалить элемент по индексу, используйте remove_at().

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN.


void fill(value: Vector3) 🔗

Присваивает заданное значение всем элементам массива. Обычно это можно использовать вместе с resize() для создания массива с заданным размером и инициализированными элементами.


int find(value: Vector3, from: int = 0) const 🔗

Выполняет поиск значения в массиве и возвращает его индекс или -1, если не найдено. При желании можно передать начальный индекс поиска.

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN.


Vector3 get(index: int) const 🔗

Возвращает Vector3 по заданному index в массиве. Если index выходит за пределы массива или имеет отрицательное значение, этот метод завершается с ошибкой и возвращает Vector3(0, 0, 0).

Этот метод похож (но не идентичен) оператору []. Наиболее примечательно то, что при сбое этого метода выполнение проекта не приостанавливается, если он запускается из редактора.


bool has(value: Vector3) const 🔗

Возвращает true, если массив содержит value.

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN.


int insert(at_index: int, value: Vector3) 🔗

Вставляет новый элемент в указанную позицию в массиве. Позиция должна быть допустимой или в конце массива (idx == size()).


bool is_empty() const 🔗

Возвращает true если массив пустой.


bool push_back(value: Vector3) 🔗

Вставляет Vector3 в конец.


void remove_at(index: int) 🔗

Удаляет элемент из массива по индексу.


int resize(new_size: int) 🔗

Устанавливает размер массива. Если массив увеличивается, резервирует элементы в конце массива. Если массив уменьшается, усекает массив до нового размера. Вызов resize() один раз и назначение новых значений быстрее, чем добавление новых элементов по одному.

Возвращает @GlobalScope.OK в случае успеха или одну из следующих констант Error, если этот метод не удался: @GlobalScope.ERR_INVALID_PARAMETER, если размер отрицательный, или @GlobalScope.ERR_OUT_OF_MEMORY, если выделение памяти не удается. Используйте size(), чтобы узнать фактический размер массива после изменения размера.


void reverse() 🔗

Инвертирует порядок элементов в массиве.


int rfind(value: Vector3, from: int = -1) const 🔗

Выполняет поиск в массиве в обратном порядке. При желании можно передать начальный индекс поиска. Если он отрицательный, начальный индекс считается относительно конца массива.

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN.


void set(index: int, value: Vector3) 🔗

Изменяет Vector3 по указанному индексу.


int size() const 🔗

Возвращает число элементов в массиве.


PackedVector3Array slice(begin: int, end: int = 2147483647) const 🔗

Возвращает срез PackedVector3Array от begin (включительно) до end (исключительно) как новый PackedVector3Array.

Абсолютное значение begin и end будет ограничено размером массива, поэтому значение по умолчанию для end делает его срезом по размеру массива по умолчанию (т. е. arr.slice(1) является сокращением для arr.slice(1, arr.size())).

Если begin или end отрицательны, они будут относительными к концу массива (т. е. arr.slice(0, -2) является сокращением для arr.slice(0, arr.size() - 2)).


void sort() 🔗

Сортирует элементы массива в порядке возрастания.

Примечание: Векторы с элементами @GDScript.NAN ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN.


PackedByteArray to_byte_array() const 🔗

Возвращает PackedByteArray, где каждый вектор закодирован в байтах.


Описания оператора

bool operator !=(right: PackedVector3Array) 🔗

Возвращает true, если содержимое массивов различается.


PackedVector3Array operator *(right: Transform3D) 🔗

Возвращает новый PackedVector3Array со всеми векторами в этом массиве, обратно преобразованными (умноженными) на заданную матрицу преобразования Transform3D, при условии, что базис преобразования ортонормальный (т. е. поворот/отражение в порядке, масштабирование/перекос — нет).

array * transform эквивалентно transform.inverse() * array. См. Transform3D.inverse().

Для преобразования с помощью обратного аффинного преобразования (например, с масштабированием) вместо этого можно использовать transform.affine_inverse() * array. См. Transform3D.affine_inverse().


PackedVector3Array operator +(right: PackedVector3Array) 🔗

Возвращает новый PackedVector3Array с содержимым right, добавленным в конец этого массива. Для лучшей производительности рассмотрите возможность использования append_array() вместо этого.


bool operator ==(right: PackedVector3Array) 🔗

Возвращает true, если содержимое обоих массивов одинаково, т.е. они имеют все одинаковые Vector3 в соответствующих индексах.


Vector3 operator [](index: int) 🔗

Возвращает Vector3 по индексу index. Отрицательные индексы можно использовать для доступа к элементам, начиная с конца. Использование индекса за пределами массива приведет к ошибке.