sprite_get_info

此函数用于检索给定精灵的信息。您提供一个精灵索引(可以是通过资源浏览器添加的资源,也可以是在运行时添加的精灵)

该函数将返回包含以下变量的结构

精灵信息结构
变量类型描述
widthReal精灵的宽度(以像素为单位)
heightReal精灵的高度(以像素为单位)
xoffsetReal精灵的X偏移/原点(以像素为单位)
yoffsetReal精灵的Y偏移/原点(以像素为单位)
transparentBoolean如果精灵标记为透明,则为true,否则为false
(这只能通过sprite_add()或类似的函数来指定,并且对于在IDE中创建的精灵将为false)
smoothBoolean如果精灵被标记为平滑,则为true,否则为false
(这只能通过sprite_add()或类似函数指定,并且将为false对于在 IDE 中创建的精灵)
typeReal精灵的类型:
0-Bitmap(常规精灵)
1-SWF
2-Spine
bbox_leftReal边界框左边缘的位置(以像素为单位)
bbox_topReal边界框上边缘的位置(以像素为单位)
bbox_rightReal边界框右边缘的位置(以像素为单位)
bbox_bottomReal边界框下边缘的位置(以像素为单位)
nameString精灵的名称
num_subimagesReal精灵中的子图像(或帧)数
use_maskboolean如果此精灵使用碰撞遮罩(从形状或图像本身生成),则为true,否则为false(表示它使用边界框)
num_masksReal此精灵中的遮罩数(如果精灵使用每帧遮罩,则大于1)
rotated_boundsboolean遮罩是否为"旋转矩形"
ninesliceStruct此精灵的九宫格结构,或者undefined(如果它没有九宫格数据)
messagesArray此精灵的广播消息数组,其中每个广播消息都是一个包含有关该消息的信息的结构(“常规精灵数据”下的更多信息)
frame_infoArray此精灵的帧数组,其中每个帧都是一个包含其计时信息的结构(“常规精灵数据”下的更多信息)
frame_speedReal为精灵设置的帧速度(请参阅:精灵编辑器)
frame_typeSprite Speed Constant为精灵设置的速度类型,可以是 spritespeed_framespersecondspritespeed_framespergameframe

此附加变量仅适用于位图(常规)精灵:

精灵信息结构
变量类型描述
framesArray此精灵的帧数组,其中每个帧都是一个包含其纹理信息的结构(“位图精灵数据”下的更多信息)

以下附加变量仅适用于 Spine 精灵:

精灵信息结构
变量类型描述
num_atlasReal使用的图集纹理的数量
atlas_textureArray用于图集的纹理ID的数组
premultipliedBoolean如果此精灵标记为预乘,则为true,否则为false
animation_namesArray数组,包含此精灵中每个动画的名称。
skin_namesArray数组,包含此精灵中每个皮肤的名称。
bonesArray包含此精灵中每个骨骼的结构的数组("Spine 精灵数据"下的更多信息)
slotsArray包含此精灵中每个槽的结构的数组("Spine 精灵数据"下的更多信息)

如果给定的精灵不存在,该函数将返回undefined。另请注意,此结构中返回的信息应被视为只读,因为修改这些变量中的任何一个都不会影响精灵.

以下部分包含有关基于精灵类型返回的结构中包含的数组和结构的信息:

通用精灵数据通用精灵数据

本节包含有关所有精灵的结构中包含的变量的信息。

消息(messages) 变量是一个数组,它包含有关给定精灵中存在的广播消息的信息。该数组中的每个广播消息都是一个包含以下变量的结构:

变量名数据类型描述
frameReal该广播消息从动画开始的计时(以帧为单位)
messageString广播消息字符串

帧信息(frame_info) 变量是一个数组,它包含有关精灵帧的计时的信息。此数组中的每个帧都是一个包含以下变量的结构:

变量名数据类型描述
frameReal此帧开始的时间(以帧为单位)
durationReal此帧的持续时间(以帧为单位)
image_indexReal此帧的图像索引

 

位图精灵数据位图精灵数据

本节包含有关位图精灵 (不是 Spine 或 SWF 类型精灵) 的结构中包含的变量的信息。

帧(frames) 变量是一个数组,它包含有关精灵帧的纹理的信息。此数组中的每个帧都是一个包含以下变量的结构:

变量名数据类型描述
xReal此框架在其纹理页面上的 X 位置 (以像素为单位)
yReal此框架在其纹理页面上的 Y 位置 (以像素为单位)
wReal内部使用的帧的逻辑宽度(以像素为单位)
hReal内部使用的帧的逻辑高度(以像素为单位)
textureReal此框架的纹理页面 ID
original_widthReal帧的原始宽度(以像素为单位)
original_heightReal帧的原始高度(以像素为单位)
crop_widthReal裁剪和缩放后纹理页面上框架的实际宽度 (因为 GameMaker 会自动裁剪图像周围的空白空间,如果不适合,也会缩小)
crop_heightReal裁剪和缩放后纹理页面上框架的实际高度
x_offsetReal从原始图像的左边缘到裁剪部分的左边缘的 X 偏移
y_offsetReal从原始图像的左边缘到裁剪部分的左边缘的 Y 偏移

 

Spine 精灵数据Spine 精灵数据

本节包含有关 Spine 精灵的结构中包含的变量的信息。

骨骼(bones) 变量是一个数组,它包含给定 Spine 精灵中所有骨骼的信息。此数组中的每个骨骼都是一个包含以下变量的结构:

变量名数据类型描述
parentString父骨骼的名称,如果此骨骼没有父骨骼,则为 未定义(undefined)
nameString骨骼的名称
indexReal骨骼的索引
lengthReal骨骼的长度
xReal骨骼的 X 位置
yReal骨骼的 Y 位置
rotationReal骨骼的旋转值
scale_xReal(Spine 内部) X 轴上的缩放值
scale_yReal(Spine 内部) Y 轴上的缩放值
shear_xReal(Spine 内部) X 轴上的剪切值
shear_yReal(Spine 内部) Y 轴上的剪切值
transform_modeReal(Spine 内部) 变形模式

注意 有关 Spine 内部变量的更多信息,请参考 Spine 文档

插槽(slots) 变量是一个数组,包含给定 Spine 精灵中所有插槽的信息。此数组中的每个槽都是一个包含以下变量的结构:

变量名数据类型描述
nameString插槽的名称
indexReal插槽的索引
boneString插槽骨骼的名称,如果该插槽没有骨骼,则为"(none)"
attachmentString附件名称
redReal插槽颜色的红色分量 (0-1)
greenReal插槽颜色的绿色分量 (0-1)
blueReal插槽颜色的蓝色分量 (0-1)
alphaReal插槽颜色的 Alpha 分量 (0-1)
blend_modeReal(Spine 内部) 插槽的混合模式
dark_red*Real插槽的 颜色的红色分量 (0-1)
dark_green*Real插槽的 颜色的绿色分量 (0-1)
dark_blue*Real插槽的 颜色的蓝色分量 (0-1)
dark_alpha*String插槽的 颜色的 Alpha 分量 (0-1)
attachmentsArray of StringAn array containing the names of all available attachments for this slot.

注意 深色变量仅在插槽启用了浅黑色时才可用。

 

 

语法:

sprite_get_info(index);

参数类型描述
indexSprite Asset要获取其信息的精灵的索引。

 

返回

精灵信息结构 (or undefined)

 

例子:

var _info = sprite_get_info(sprite_index);

if (_info != undefined && _info.type == 0)
{
    var _messages = _info.messages;
    var _messageCount = array_length(_messages);
    
    for (var i = 0; i < _messageCount; i ++)
    {
        var _message = _messages[i];
        show_debug_message("Message at frame " + string(_message.frame) + ": " + _message.message);
    }
}

上面的代码获取实例的精灵的信息结构,然后检查它是否不是 undefined,并且它的类型是 0( 意味着它是位图精灵)。在这种情况下,它获取该精灵的广播消息数组,然后运行 for 循环将每个广播消息 (及其帧) 输出到输出日志。