Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
PackedVector3Array
Пакетний масив Vector3s.
Опис
Масив, спеціально призначений для зберігання елементів типу Vector3. Дані в ньому упаковуються щільно, що дозволяє економити пам'ять при роботі з великими масивами.
Відмінності між упакованими масивами, типізованими масивами та нетипізованими масивами: Упаковані масиви, як правило, швидше обробляються та модифікуються порівняно з типізованим масивом того ж типу (наприклад, PackedVector3Array проти Array [Vector3]). Крім того, упаковані масиви споживають менше пам'яті. Недоліком є те, що упаковані масиви менш гнучкі, оскільки не пропонують стільки зручних методів, як, наприклад, Array.map(). Типізовані масиви, у свою чергу, швидше обробляються та модифікуються, ніж нетипізовані масиви.
Примітка: Упаковані масиви завжди передаються за посиланням. Щоб отримати копію масиву, яку можна змінювати незалежно від оригінального масиву, використовуйте duplicate(). Це не стосується вбудованих властивостей та методів. У цих випадках повернений упакований масив є копією, і його зміна не вплине на оригінальне значення. Щоб оновити вбудовану властивість цього типу, змініть повернутий масив, а потім знову присвойте його властивості.
Примітка: У логічному контексті упакований масив обчислюється як false, якщо він порожній. В іншому випадку упакований масив завжди обчислюється як true.
Примітка
Існують значні відмінності при використанні цього API із С#. Більше інформації: ref:doc_c_sharp_differences.
Конструктори
PackedVector3Array(from: Array) |
Методи
void |
append_array(array: PackedVector3Array) |
void |
clear() |
duplicate() const |
|
void |
|
is_empty() const |
|
void |
|
void |
reverse() |
void |
|
size() const |
|
void |
sort() |
to_byte_array() const |
Оператори
operator !=(right: PackedVector3Array) |
|
operator *(right: Transform3D) |
|
operator +(right: PackedVector3Array) |
|
operator ==(right: PackedVector3Array) |
|
operator [](index: int) |
Описи конструкторів
PackedVector3Array PackedVector3Array() 🔗
Будуємо порожній PackedVector3Array.
PackedVector3Array PackedVector3Array(from: PackedVector3Array)
Constructs a PackedVector3Array як копія даної PackedVector3Array.
PackedVector3Array PackedVector3Array(from: Array)
Створює новий PackedVector3Array. За бажанням ви можете передати загальний Array, який буде перетворено.
Примітка. Під час ініціалізації PackedVector3Array з елементами, він повинен бути ініціалізований Array значень Vector3:
var array = PackedVector3Array([Vector3(12, 34, 56), Vector3(78, 90, 12)])
Описи методів
Додає елемент у кінець масиву (псевдонім 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 🔗
Створює копію масиву і повертає його.
Видаляє перше входження значення з масиву та повертає true. Якщо значення не існує в масиві, нічого не відбувається, і повертається false. Щоб видалити елемент за індексом, використовуйте метод remove_at.
Примітка: Вектори з елементами @GDScript.NAN поводяться інакше, ніж інші вектори. Тому результати цього методу можуть бути неточними, якщо включені NaN.
Присвоює задане значення всім елементам масиву. Зазвичай це можна використовувати разом з 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 == розмір()).
Повертає true, якщо масив порожній.
bool push_back(value: Vector3) 🔗
Вставте Vector3 в кінці.
Видаляє елемент з масиву за індексом.
Встановлює розмір масиву. Якщо масив збільшується, резервує елементи в кінці масиву. Якщо масив скорочується, обрізає масив до нового розміру. Виклик методу 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 в даній позиції.
Повертає кількість елементів у масиві.
PackedVector3Array slice(begin: int, end: int = 2147483647) const 🔗
Повертає розріз PackedVector3Array, з start (включно) до end (виключно), як новий PackedVector3Array.
Абсолютне значення start і end буде зафіксовано до розміру масиву, тому значення за замовчуванням для end робить кінець розрізу кінцем масиву за замовчуванням (тобто arr.slice(1) є скороченим записом для arr.slice(1, arr.size())).
Якщо ж start або 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 з усіма векторами в цьому масиві, навпаки, трансформується (multiplied) за допомогою даної Transform3D матриці перетворення, під припущенням, що основа трансформації є ортонормальним (тобто обертання / рефлекція є дрібним, масштабування / шавлія не).
array * трансформатор еквівалент 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. Негативні індекси можуть використовуватися для доступу до елементів з кінця. Використання індексу з меж масиву призведе до помилки.