:github_url: hide .. _class_PackedVector4Array: PackedVector4Array ================== Упакованный массив :ref:`Vector4`. .. rst-class:: classref-introduction-group Описание ---------------- Массив, специально разработанный для хранения :ref:`Vector4`. Плотно упаковывает данные, поэтому экономит память для больших размеров массива. \ **Различия между упакованными массивами, типизированными массивами и нетипизированными массивами:** Упакованные массивы, как правило, быстрее итерируются и изменяются по сравнению с типизированным массивом того же типа (например, **PackedVector4Array** по сравнению с ``Array[Vector4]``). Кроме того, упакованные массивы потребляют меньше памяти. С другой стороны, упакованные массивы менее гибкие, поскольку они не предлагают столько удобных методов, как :ref:`Array.map()`. Типизированные массивы, в свою очередь, быстрее итерируются и изменяются, чем нетипизированные массивы. \ **Примечание:** Упакованные массивы всегда передаются по ссылке. Чтобы получить копию массива, которую можно изменять независимо от исходного массива, используйте :ref:`duplicate()`. Это *не* касается встроенных свойств и методов. В этих случаях возвращаемый упакованный массив является копией, и его изменение *не* повлияет на исходное значение. Чтобы обновить встроенное свойство этого типа, измените возвращаемый массив, а затем снова присвойте его свойству. .. note:: Существуют заметные различия при использовании данного API с C#. Подробнее см. :ref:`doc_c_sharp_differences`. .. rst-class:: classref-reftable-group Конструкторы ------------------------ .. table:: :widths: auto +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector4Array` | :ref:`PackedVector4Array`\ (\ ) | +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector4Array` | :ref:`PackedVector4Array`\ (\ from\: :ref:`PackedVector4Array`\ ) | +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector4Array` | :ref:`PackedVector4Array`\ (\ from\: :ref:`Array`\ ) | +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group Методы ------------ .. table:: :widths: auto +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`append`\ (\ value\: :ref:`Vector4`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`append_array`\ (\ array\: :ref:`PackedVector4Array`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`bsearch`\ (\ value\: :ref:`Vector4`, before\: :ref:`bool` = true\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear`\ (\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`count`\ (\ value\: :ref:`Vector4`\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector4Array` | :ref:`duplicate`\ (\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`Vector4`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`Vector4`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`Vector4`, from\: :ref:`int` = 0\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`get`\ (\ index\: :ref:`int`\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has`\ (\ value\: :ref:`Vector4`\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`insert`\ (\ at_index\: :ref:`int`, value\: :ref:`Vector4`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_empty`\ (\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`push_back`\ (\ value\: :ref:`Vector4`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`remove_at`\ (\ index\: :ref:`int`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`resize`\ (\ new_size\: :ref:`int`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`reverse`\ (\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`rfind`\ (\ value\: :ref:`Vector4`, from\: :ref:`int` = -1\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set`\ (\ index\: :ref:`int`, value\: :ref:`Vector4`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`size`\ (\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector4Array` | :ref:`slice`\ (\ begin\: :ref:`int`, end\: :ref:`int` = 2147483647\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`sort`\ (\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedByteArray` | :ref:`to_byte_array`\ (\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group Операторы ------------------ .. table:: :widths: auto +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator !=`\ (\ right\: :ref:`PackedVector4Array`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector4Array` | :ref:`operator +`\ (\ right\: :ref:`PackedVector4Array`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator ==`\ (\ right\: :ref:`PackedVector4Array`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator []`\ (\ index\: :ref:`int`\ ) | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания конструктора ------------------------------------------ .. _class_PackedVector4Array_constructor_PackedVector4Array: .. rst-class:: classref-constructor :ref:`PackedVector4Array` **PackedVector4Array**\ (\ ) :ref:`🔗` Создает пустой **PackedVector4Array**. .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`PackedVector4Array` **PackedVector4Array**\ (\ from\: :ref:`PackedVector4Array`\ ) Создает **PackedVector4Array** как копию заданного **PackedVector4Array**. .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`PackedVector4Array` **PackedVector4Array**\ (\ from\: :ref:`Array`\ ) Создает новый **PackedVector4Array**. При желании вы можете передать общий :ref:`Array`, который будет преобразован. \ **Примечание:** При инициализации **PackedVector4Array** элементами он должен быть инициализирован :ref:`Array` значений :ref:`Vector4`: :: var array = PackedVector4Array([Vector4(12, 34, 56, 78), Vector4(90, 12, 34, 56)]) .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания метода ------------------------------ .. _class_PackedVector4Array_method_append: .. rst-class:: classref-method :ref:`bool` **append**\ (\ value\: :ref:`Vector4`\ ) :ref:`🔗` Добавляет элемент в конец массива (псевдоним :ref:`push_back()`). .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_append_array: .. rst-class:: classref-method |void| **append_array**\ (\ array\: :ref:`PackedVector4Array`\ ) :ref:`🔗` Добавляет **PackedVector4Array** в конец этого массива. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_bsearch: .. rst-class:: classref-method :ref:`int` **bsearch**\ (\ value\: :ref:`Vector4`, before\: :ref:`bool` = true\ ) |const| :ref:`🔗` Находит индекс существующего значения (или индекс вставки, который поддерживает порядок сортировки, если значение еще не присутствует в массиве) с помощью бинарного поиска. При желании можно передать спецификатор ``before``. Если ``false``, возвращаемый индекс следует после всех существующих записей значения в массиве. \ **Примечание:** Вызов :ref:`bsearch()` для несортированного массива приводит к неожиданному поведению. \ **Примечание:** Векторы с элементами :ref:`@GDScript.NAN` ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_clear: .. rst-class:: classref-method |void| **clear**\ (\ ) :ref:`🔗` Очищает массив. Это эквивалентно использованию :ref:`resize()` с размером ``0``. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_count: .. rst-class:: classref-method :ref:`int` **count**\ (\ value\: :ref:`Vector4`\ ) |const| :ref:`🔗` Возвращает количество раз, когда элемент находится в массиве. \ **Примечание:** Векторы с элементами :ref:`@GDScript.NAN` ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_duplicate: .. rst-class:: classref-method :ref:`PackedVector4Array` **duplicate**\ (\ ) |const| :ref:`🔗` Создает копию массива и возвращает ее. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_erase: .. rst-class:: classref-method :ref:`bool` **erase**\ (\ value\: :ref:`Vector4`\ ) :ref:`🔗` Удаляет первое вхождение значения из массива и возвращает ``true``. Если значение не существует в массиве, ничего не происходит и возвращается ``false``. Чтобы удалить элемент по индексу, используйте :ref:`remove_at()`. \ **Примечание:** Векторы с элементами :ref:`@GDScript.NAN` ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_fill: .. rst-class:: classref-method |void| **fill**\ (\ value\: :ref:`Vector4`\ ) :ref:`🔗` Присваивает заданное значение всем элементам массива. Обычно это можно использовать вместе с :ref:`resize()` для создания массива с заданным размером и инициализированными элементами. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_find: .. rst-class:: classref-method :ref:`int` **find**\ (\ value\: :ref:`Vector4`, from\: :ref:`int` = 0\ ) |const| :ref:`🔗` Выполняет поиск значения в массиве и возвращает его индекс или ``-1``, если не найдено. При желании можно передать начальный индекс поиска. \ **Примечание:** Векторы с элементами :ref:`@GDScript.NAN` ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_get: .. rst-class:: classref-method :ref:`Vector4` **get**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` Returns the :ref:`Vector4` at the given ``index`` in the array. If ``index`` is out-of-bounds or negative, this method fails and returns ``Vector4(0, 0, 0, 0)``. This method is similar (but not identical) to the ``[]`` operator. Most notably, when this method fails, it doesn't pause project execution if run from the editor. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_has: .. rst-class:: classref-method :ref:`bool` **has**\ (\ value\: :ref:`Vector4`\ ) |const| :ref:`🔗` Возвращает ``true``, если массив содержит ``value``. \ **Примечание:** Векторы с элементами :ref:`@GDScript.NAN` ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_insert: .. rst-class:: classref-method :ref:`int` **insert**\ (\ at_index\: :ref:`int`, value\: :ref:`Vector4`\ ) :ref:`🔗` Вставляет новый элемент в указанную позицию в массиве. Позиция должна быть допустимой или в конце массива (``idx == size()``). .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_is_empty: .. rst-class:: classref-method :ref:`bool` **is_empty**\ (\ ) |const| :ref:`🔗` Возвращает ``true`` если массив пустой. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_push_back: .. rst-class:: classref-method :ref:`bool` **push_back**\ (\ value\: :ref:`Vector4`\ ) :ref:`🔗` Вставляет :ref:`Vector4` в конец. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_remove_at: .. rst-class:: classref-method |void| **remove_at**\ (\ index\: :ref:`int`\ ) :ref:`🔗` Удаляет элемент из массива по индексу. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_resize: .. rst-class:: classref-method :ref:`int` **resize**\ (\ new_size\: :ref:`int`\ ) :ref:`🔗` Устанавливает размер массива. Если массив увеличивается, резервирует элементы в конце массива. Если массив уменьшается, усекает массив до нового размера. Вызов :ref:`resize()` один раз и назначение новых значений быстрее, чем добавление новых элементов по одному. Возвращает :ref:`@GlobalScope.OK` в случае успеха или одну из следующих констант :ref:`Error`, если этот метод не удался: :ref:`@GlobalScope.ERR_INVALID_PARAMETER`, если размер отрицательный, или :ref:`@GlobalScope.ERR_OUT_OF_MEMORY`, если выделение памяти не удается. Используйте :ref:`size()`, чтобы узнать фактический размер массива после изменения размера. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_reverse: .. rst-class:: classref-method |void| **reverse**\ (\ ) :ref:`🔗` Инвертирует порядок элементов в массиве. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_rfind: .. rst-class:: classref-method :ref:`int` **rfind**\ (\ value\: :ref:`Vector4`, from\: :ref:`int` = -1\ ) |const| :ref:`🔗` Выполняет поиск в массиве в обратном порядке. При желании можно передать начальный индекс поиска. Если он отрицательный, начальный индекс считается относительно конца массива. \ **Примечание:** Векторы с элементами :ref:`@GDScript.NAN` ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_set: .. rst-class:: classref-method |void| **set**\ (\ index\: :ref:`int`, value\: :ref:`Vector4`\ ) :ref:`🔗` Изменяет :ref:`Vector4` по указанному индексу. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_size: .. rst-class:: classref-method :ref:`int` **size**\ (\ ) |const| :ref:`🔗` Возвращает число элементов в массиве. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_slice: .. rst-class:: classref-method :ref:`PackedVector4Array` **slice**\ (\ begin\: :ref:`int`, end\: :ref:`int` = 2147483647\ ) |const| :ref:`🔗` Возвращает срез **PackedVector4Array** от ``begin`` (включительно) до ``end`` (исключительно) как новый **PackedVector4Array**. Абсолютное значение ``begin`` и ``end`` будет ограничено размером массива, поэтому значение по умолчанию для ``end`` делает его срезом по размеру массива по умолчанию (т. е. ``arr.slice(1)`` является сокращением для ``arr.slice(1, arr.size())``). Если ``begin`` или ``end`` отрицательны, они будут относительными к концу массива (т. е. ``arr.slice(0, -2)`` является сокращением для ``arr.slice(0, arr.size() - 2)``). .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_sort: .. rst-class:: classref-method |void| **sort**\ (\ ) :ref:`🔗` Сортирует элементы массива в порядке возрастания. \ **Примечание:** Векторы с элементами :ref:`@GDScript.NAN` ведут себя не так, как другие векторы. Поэтому результаты этого метода могут быть неточными, если включены NaN. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_method_to_byte_array: .. rst-class:: classref-method :ref:`PackedByteArray` **to_byte_array**\ (\ ) |const| :ref:`🔗` Возвращает :ref:`PackedByteArray`, где каждый вектор закодирован в байтах. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания оператора ------------------------------------ .. _class_PackedVector4Array_operator_neq_PackedVector4Array: .. rst-class:: classref-operator :ref:`bool` **operator !=**\ (\ right\: :ref:`PackedVector4Array`\ ) :ref:`🔗` Возвращает ``true``, если содержимое массивов различается. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_operator_sum_PackedVector4Array: .. rst-class:: classref-operator :ref:`PackedVector4Array` **operator +**\ (\ right\: :ref:`PackedVector4Array`\ ) :ref:`🔗` Возвращает новый **PackedVector4Array** с содержимым ``right``, добавленным в конец этого массива. Для лучшей производительности рассмотрите возможность использования :ref:`append_array()` вместо этого. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_operator_eq_PackedVector4Array: .. rst-class:: classref-operator :ref:`bool` **operator ==**\ (\ right\: :ref:`PackedVector4Array`\ ) :ref:`🔗` Возвращает ``true``, если содержимое обоих массивов одинаково, т.е. они имеют все одинаковые :ref:`Vector4` в соответствующих индексах. .. rst-class:: classref-item-separator ---- .. _class_PackedVector4Array_operator_idx_int: .. rst-class:: classref-operator :ref:`Vector4` **operator []**\ (\ index\: :ref:`int`\ ) :ref:`🔗` Возвращает :ref:`Vector4` по индексу ``index``. Отрицательные индексы можно использовать для доступа к элементам, начиная с конца. Использование индекса за пределами массива приведет к ошибке. .. |virtual| replace:: :abbr:`virtual (Этот метод обычно должен быть переопределен пользователем, чтобы иметь какой-либо эффект.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (Этот метод не имеет побочных эффектов. Он не изменяет ни одну из переменных-членов экземпляра.)` .. |vararg| replace:: :abbr:`vararg (Этот метод принимает любое количество аргументов после описанных здесь.)` .. |constructor| replace:: :abbr:`constructor (Этот метод используется для создания типа.)` .. |static| replace:: :abbr:`static (Этот метод не нуждается в вызове экземпляра, поэтому его можно вызвать напрямую, используя имя класса.)` .. |operator| replace:: :abbr:`operator (Этот метод описывает допустимый оператор для использования с этим типом в качестве левого операнда.)` .. |bitfield| replace:: :abbr:`BitField (Это значение является целым числом, составленным как битовая маска следующих флагов.)` .. |void| replace:: :abbr:`void (Нет возвращаемого значения.)`