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]。如果超出這個範圍,數值將會發生環繞(wrap around,即溢出後從另一端重新開始)。相比之下,int 型別使用的是有符號 64 位元整數,可以容納大得多的數值。如果你需要緊密打包 64 位元整數,請查看 PackedInt64Array。
注意: 打包陣列總是通過參照(reference)傳遞。如果你想取得一個可以獨立於原陣列進行修改的副本,請使用 duplicate() 方法。不過,內建屬性和方法的情況並非如此。在這些情況下,回傳的打包陣列是一個副本,修改它並不會影響原始值。若要更新此類內建屬性,你需要修改回傳的陣列,然後將其重新賦值給該屬性。
注意: 在布林值情境中,如果打包陣列為空,其計算結果將為 false。否則,打包陣列總是會被計算為 true。
備註
使用 C# 操作此 API 時有顯著差異,詳見 C# API 與 GDScript 的不同。
建構子
PackedInt32Array(from: PackedInt32Array) |
|
PackedInt32Array(from: Array) |
方法
void |
append_array(array: PackedInt32Array) |
void |
clear() |
duplicate() const |
|
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) const 🔗
使用二進法搜尋已有值的索引(如果該值尚未存在於陣列中,則為保持排序順序的插入索引)。傳遞 before 說明符是可選的。如果該參數為 false,則返回的索引位於陣列中該值的所有已有的條目之後。
注意:在未排序的陣列上呼叫 bsearch() 會產生預料之外的行為。
void clear() 🔗
清空陣列。相當於呼叫 resize() 時指定大小為 0。
返回元素在陣列中出現的次數。
PackedInt32Array duplicate() const 🔗
建立該陣列的副本,並將該副本返回。
在陣列中移除首次出現的某個值並回傳 true。如果陣列中不存在該值,則不會發生任何事情,回傳 false。要按照索引移除元素,請改用 remove_at()。
將陣列中的所有元素都設為給定的值。通常與 resize() 一起使用,建立給定大小的陣列並初始化元素。
int find(value: int, from: int = 0) const 🔗
在陣列中搜尋值並返回其索引,如果未找到則返回 -1 。可選地,可以傳遞起始搜尋索引。
回傳陣列中索引為 index 的 32 位元整數。如果 index 越界或為負數,則該方法失敗並回傳 0。
該方法類似於 [] 運算符(但不等價)。最顯著的區別就是從編輯器中執行時,該方法失敗不會暫停專案執行。
如果該陣列包含 value,則返回 true。
int insert(at_index: int, value: int) 🔗
在陣列中的給定位置插入新的整數。位置必須有效,或者位於陣列末尾(idx == size())。
該陣列為空時,返回 true。
將一個值新增到陣列中。
Removes an element from the array by index. If index is out-of-bounds or negative, this method fails.
設定陣列的大小。如果陣列增大,則預留陣列末端的元素。如果陣列縮小,則將陣列截斷到新的大小。呼叫一次 resize() 然後賦值比逐個新增新元素要快。
成功時回傳 @GlobalScope.OK,失敗時回傳下列 Error 常數:大小為負數則回傳 @GlobalScope.ERR_INVALID_PARAMETER,分配失敗則回傳 @GlobalScope.ERR_OUT_OF_MEMORY。請使用 size() 取得調整後的實際大小。
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 位元,與該陣列中所儲存的值不同。