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.

PackedColorArray

Color 紧缩数组。

描述

专门设计用于保存 Color 的数组。紧密打包数据,因此可为大型数组节省内存。

紧缩数组、类型化数组和非类型化数组之间的差异:与同类型的类型化数组相比,紧缩数组的迭代和修改速度通常更快(例如 PackedColorArrayArray[Color])。此外,紧缩数组消耗的内存更少。缺点是,紧缩数组不太灵活,因为它们不提供许多便捷方法,例如 Array.map()。类型化数组的迭代和修改速度反过来比非类型化数组更快。

注意:紧缩数组始终通过引用传递。要获取可以独立于原始数组进行修改的数组副本,请使用 duplicate()。内置属性和方法的情况并如此。这些返回的紧缩数组是副本,更改它会影响原始值。要更新内置属性,需要修改返回的数组,然后再次将其分配给该属性。

备注

通过 C# 使用该 API 时会有显著不同,详见 C# API 与 GDScript 的差异

构造函数

PackedColorArray

PackedColorArray()

PackedColorArray

PackedColorArray(from: PackedColorArray)

PackedColorArray

PackedColorArray(from: Array)

方法

bool

append(value: Color)

void

append_array(array: PackedColorArray)

int

bsearch(value: Color, before: bool = true)

void

clear()

int

count(value: Color) const

PackedColorArray

duplicate()

void

fill(value: Color)

int

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

Color

get(index: int) const

bool

has(value: Color) const

int

insert(at_index: int, value: Color)

bool

is_empty() const

bool

push_back(value: Color)

void

remove_at(index: int)

int

resize(new_size: int)

void

reverse()

int

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

void

set(index: int, value: Color)

int

size() const

PackedColorArray

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

void

sort()

PackedByteArray

to_byte_array() const

运算符

bool

operator !=(right: PackedColorArray)

PackedColorArray

operator +(right: PackedColorArray)

bool

operator ==(right: PackedColorArray)

Color

operator [](index: int)


构造函数说明

PackedColorArray PackedColorArray() 🔗

构造空的 PackedColorArray


PackedColorArray PackedColorArray(from: PackedColorArray)

构造给定 PackedColorArray 的副本。


PackedColorArray PackedColorArray(from: Array)

构造新的 PackedColorArray。你也可以传一个通用 Array 进行转换。

注意:使用元素初始化 PackedColorArray 时,必须使用元素为 ColorArray

var array = PackedColorArray([Color(0.1, 0.2, 0.3), Color(0.4, 0.5, 0.6)])

方法说明

bool append(value: Color) 🔗

向数组末尾追加一个元素(push_back() 的别名)。


void append_array(array: PackedColorArray) 🔗

在该数组的末尾追加一个 PackedColorArray


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

使用二进法查找已有值的索引(如果该值尚未存在于数组中,则为保持排序顺序的插入索引)。传递 before 说明符是可选的。如果该参数为 false,则返回的索引位于数组中该值的所有已有的条目之后。

注意:在未排序的数组上调用 bsearch() 会产生预料之外的行为。


void clear() 🔗

清空数组。相当于调用 resize() 时指定大小为 0


int count(value: Color) const 🔗

返回元素在数组中出现的次数。


PackedColorArray duplicate() 🔗

创建该数组的副本,并将该副本返回。


void fill(value: Color) 🔗

将数组中的所有元素都设为给定的值。通常与 resize() 一起使用,创建给定大小的数组并初始化元素。


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

在数组中搜索值并返回其索引,如果未找到则返回 -1 。可选地,可以传递起始搜索索引。


Color get(index: int) const 🔗

返回数组中位于给定索引 index 处的 Color。与使用 [] 运算符相同(array[index])。


bool has(value: Color) const 🔗

如果该数组包含 value,则返回 true


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

在数组中给定的位置插入一个新元素。这个位置必须是有效的,或者是在数组的末端(idx == size())。


bool is_empty() const 🔗

该数组为空时,返回 true


bool push_back(value: Color) 🔗

将一个值添加到数组中。


void remove_at(index: int) 🔗

从数组中删除位于索引的元素。


int resize(new_size: int) 🔗

设置数组的大小。如果数组被增大,则保留数组末端的元素。如果数组被缩小,则将数组截断到新的大小。调用一次 resize() 并分配新值比逐个添加新元素要快。


void reverse() 🔗

将数组中的元素逆序排列。


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

逆序搜索数组。还可以传递起始搜索位置索引。如果为负,则起始索引被视为相对于数组的结尾。


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

更改给定索引处的 Color


int size() const 🔗

返回数组中元素的个数。


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

返回该 PackedColorArray 的切片,是从 begin(含)到 end(不含)的全新 PackedColorArray

beginend 的绝对值会按数组大小进行限制,所以 end 的默认值会切到数组大小为止(即 arr.slice(1)arr.slice(1, arr.size()) 的简写)。

如果 beginend 为负,则表示相对于数组的末尾(即 arr.slice(0, -2)arr.slice(0, arr.size() - 2) 的简写)。


void sort() 🔗

将该数组中的元素按升序排列。


PackedByteArray to_byte_array() const 🔗

返回 PackedByteArray,每个颜色都被编码为字节。


运算符说明

bool operator !=(right: PackedColorArray) 🔗

如果数组内容不同,则返回 true


PackedColorArray operator +(right: PackedColorArray) 🔗

返回新的 PackedColorArray,新数组的内容为此数组在末尾加上 right。为了提高性能,请考虑改用 append_array()


bool operator ==(right: PackedColorArray) 🔗

如果两个数组的内容相同,即对应索引号的 Color 相等,则返回 true


Color operator [](index: int) 🔗

返回索引 index 处的Color。负数索引可以从末端开始访问元素。使用超出数组范围的索引将导致出错。