这个函数的工作方式与sprite_create_from_surface()完全相同,只是它不是从你选择的索引表面的区域创建一个新的精灵,而是将表面的定义区域作为一个新的子图像添加到先前创建的精灵中(这意味着你不能将其直接添加到资源树中的精灵,而只能添加到先前从表面创建的精灵,或者使用sprite_duplicate()从资源精灵中复制的一个。)
需要注意的是,以这种方式添加sprite时使用的内存将比您预期的要大。这是因为GameMaker会将精灵存储为纹理页,并且它还会存储在GPU内存中,因此总内存将大于同一精灵的图像文件的预期内存。
注意 此函数仅适用于使用 surface_rgba8unorm (默认)表面格式的表面 。
sprite_add_from_surface(index, surface, x, y, w, h, removeback, smooth);
参数 | 类型 | 描述 |
---|---|---|
index | Sprite Asset | 要将新图像添加到的精灵的索引。 |
surface | Surface | 我们从其获得图像的表面的索引。 |
x | Real | 要从中复制的X位置。 |
y | Real | 要复制的Y位置。 |
w | Real | 要复制的区域的宽度(从X位置)。 |
h | Real | 要复制的区域的高度(从Y位置)。 |
removeback | Boolean | 指示是否将具有背景色的所有像素(左下像素)设置为透明。 |
smooth | Boolean | 指示是否平滑边缘。 |
N/A
spr_custom = sprite_create_from_surface(surf, 0, 0, 32, 32, true, true, 16, 16);
var i;
for (i = 1; i < 8; i += 1)
{
sprite_add_from_surface(spr_custom, surf, i, 0, 32, 32, true, true);
}
上面的代码从在变量“ surf ”中索引的表面创建精灵,将其索引分配给变量“ SPR_custom ”,然后使用for循环在表面上移动并捕获作为子图像添加到精灵中的各个部分。