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...
PackedInt32Array
32 位整数紧缩数组。
描述
专门设计用于存放 32 位整数值的数组。数据是紧密存放的,因此能够在数组较大时节省内存。
注意:该类型存储的是 32 位有符号整数,也就是说它可以取区间 [-2^31, 2^31 - 1]
内的值,即 [-2147483648, 2147483647]
。超过界限时会从另一端绕回。相比之下,int 使用带符号的 64 位整数,可以容纳更大的值。紧密存放 64 位整数见 PackedInt64Array。
注意:紧缩数组始终按引用传递。如果需要获取数组的副本,独立于原始数组进行修改,请使用 duplicate()。内置属性及方法无需考虑该规则,返回的紧缩数组是副本,对其进行修改不影响原值。更新内置属性时,请在修改返回的数组后,将其赋值回该属性。
备注
通过 C# 使用该 API 时会有显著不同,详见 C# API 与 GDScript 的差异。
构造函数
PackedInt32Array(from: PackedInt32Array) |
|
PackedInt32Array(from: Array) |
方法
void |
append_array(array: PackedInt32Array) |
void |
clear() |
void |
|
is_empty() const |
|
void |
|
void |
reverse() |
void |
|
size() const |
|
void |
sort() |
to_byte_array() const |
运算符
operator !=(right: PackedInt32Array) |
|
operator +(right: PackedInt32Array) |
|
operator ==(right: PackedInt32Array) |
|
operator [](index: int) |
构造函数说明
PackedInt32Array PackedInt32Array() 🔗
构造空的 PackedInt32Array。
PackedInt32Array PackedInt32Array(from: PackedInt32Array)
构造给定 PackedInt32Array 的副本。
PackedInt32Array PackedInt32Array(from: Array)
构造新 PackedInt32Array。你还可以传入通用 Array 进行转换。
方法说明
向数组末尾追加一个元素(push_back() 的别名)。
void append_array(array: PackedInt32Array) 🔗
在该数组的末尾追加一个 PackedInt32Array。
int bsearch(value: int, before: bool = true) 🔗
使用二进法查找已有值的索引(如果该值尚未存在于数组中,则为保持排序顺序的插入索引)。传递 before
说明符是可选的。如果该参数为 false
,则返回的索引位于数组中该值的所有已有的条目之后。
注意:在未排序的数组上调用 bsearch() 会产生预料之外的行为。
void clear() 🔗
清空数组。相当于调用 resize() 时指定大小为 0
。
返回元素在数组中出现的次数。
PackedInt32Array duplicate() 🔗
创建该数组的副本,并将该副本返回。
将数组中的所有元素都设为给定的值。通常与 resize() 一起使用,创建给定大小的数组并初始化元素。
int find(value: int, from: int = 0) const 🔗
在数组中搜索值并返回其索引,如果未找到则返回 -1
。可选地,可以传递起始搜索索引。
返回数组中位于给定索引 index
处的 32 位整数。与使用 []
运算符相同(array[index]
)。
如果该数组包含 value
,则返回 true
。
int insert(at_index: int, value: int) 🔗
在数组中的给定位置插入新的整数。位置必须有效,或者位于数组末尾(idx == size()
)。
该数组为空时,返回 true
。
将一个值添加到数组中。
从数组中删除位于索引的元素。
设置数组的大小。如果数组被增大,则保留数组末端的元素。如果数组被缩小,则将数组截断到新的大小。调用一次 resize() 并分配新值比逐个添加新元素要快。
void reverse() 🔗
将数组中的元素逆序排列。
int rfind(value: int, from: int = -1) const 🔗
逆序搜索数组。还可以传递起始搜索位置索引。如果为负,则起始索引被视为相对于数组的结尾。
void set(index: int, value: int) 🔗
更改给定索引处的整数。
返回数组中元素的个数。
PackedInt32Array slice(begin: int, end: int = 2147483647) const 🔗
返回该 PackedInt32Array 的切片,是从 begin
(含)到 end
(不含)的全新 PackedInt32Array。
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() 🔗
将该数组中的元素按升序排列。
PackedByteArray to_byte_array() const 🔗
返回数据的副本,将其中的每个元素都编码为 4 个字节,放入 PackedByteArray 中。
新数组的大小为 int32_array.size() * 4
。
运算符说明
bool operator !=(right: PackedInt32Array) 🔗
如果数组内容不同,则返回 true
。
PackedInt32Array operator +(right: PackedInt32Array) 🔗
返回新的 PackedInt32Array,新数组的内容为此数组在末尾加上 right
。为了提高性能,请考虑改用 append_array()。
bool operator ==(right: PackedInt32Array) 🔗
如果两个数组的内容相同,即对应索引号的整数相等,则返回 true
。
返回索引 index
处的 int。负数索引可以从末尾开始访问元素。使用超出数组范围的索引会导致出错。
注意,int 类型为 64 位,与该数组中所存储的值不同。