This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
精灵(Sprite)组件是显示在屏幕上的简单图片或翻页动画。
精灵(Sprite)组件可以使用图集或瓷砖图源作为其图形资源。
除了 Id、Position 和 Rotation 属性外,还有以下组件特定属性:
Image
。否则,每个槽位以材质中的纹理采样器命名。
每个槽位指定精灵在该纹理采样器上使用的图集或瓷砖图源资源。Automatic
,编辑器将自动设置精灵的大小。如果设置为 Manual
,您可以手动设置大小。GUI 框节点和精灵组件有时会包含对其大小敏感的元素:需要调整大小以适应所包含内容的面板和对话框,或者需要调整大小以显示敌人剩余生命值的生命条。当您将纹理应用到调整大小后的节点或精灵时,这些可能会导致视觉问题。
通常,引擎会将纹理缩放以适应矩形边界,但通过定义九宫格边缘区域,可以限制纹理中应该缩放的部分:
九宫格 框节点由 4 个数字组成,指定左、上、右和下边缘不应常规缩放的像素数:
边缘是顺时针设置的,从左边缘开始:
上述 九宫格 纹理缩放仅在您更改框节点或精灵的大小时应用:
如果您更改框节点或精灵的缩放参数(或游戏对象上的缩放参数)- 节点或精灵以及纹理将被缩放而不应用 九宫格 参数。
在精灵上使用九宫格纹理时,图像的精灵修剪模式必须设置为关闭。
由于渲染器中 mipmap 的工作方式,纹理段的缩放有时可能会出现伪影。当您将纹理段 缩小 到原始纹理大小以下时会发生这种情况。然后渲染器为该段选择较低分辨率的 mipmap,导致视觉伪影。
为避免此问题,请确保将要缩放的纹理段足够小,永远不会被缩小,只会被放大。
Blend Mode 属性定义了组件图形应如何与其后面的图形进行混合。以下是可用的混合模式及其计算方式:
src.a * src.rgb + (1 - src.a) * dst.rgb
src.rgb + dst.rgb
src.rgb * dst.rgb
src.rgb - dst.rgb * dst.rgb
您可以通过多种不同的函数和属性在运行时操作精灵(请参阅API 文档了解用法)。函数:
sprite.play_flipbook()
- 在精灵组件上播放动画。sprite.set_hflip()
和 sprite.set_vflip()
- 设置精灵动画的水平翻转和垂直翻转。精灵还有许多可以使用 go.get()
和 go.set()
操作的不同属性:
cursor
number
)。image
hash
)。您可以使用图集或瓷砖图源资源属性和 go.set()
来更改此属性。请参阅API 参考中的示例。material
hash
)。您可以使用材质资源属性和 go.set()
来更改此属性。请参阅API 参考中的示例。playback_rate
number
)。scale
vector3
)。size
vector3
)。只有当精灵的大小模式设置为手动时才能更改。默认的 sprite 材质具有以下常量,可以使用 go.set() 或 go.animate() 进行更改(详情请参考材质手册)。示例:
go.set("#sprite", "tint", vmath.vector4(1,0,0,1))
go.animate("#sprite", "tint", go.PLAYBACK_LOOP_PINGPONG, vmath.vector4(1,0,0,1), go.EASING_LINEAR, 2)
tint
vector4
)。vector4 用于表示色调,其中 x、y、z 和 w 分别对应红色、绿色、蓝色和 alpha 色调。精灵可以覆盖当前分配材质中的顶点属性,并将从组件传递到顶点着色器(请参阅材质手册了解更多详情)。
材质中指定的属性将在检查器中显示为常规属性,并且可以在单个精灵组件上设置。如果任何属性被覆盖,它将显示为被覆盖的属性,并存储在磁盘上的精灵文件中:
game.project 文件中有一些与精灵相关的项目设置。
当精灵使用多个纹理时,有一些注意事项。
动画数据(fps、帧名称)目前取自第一个纹理。我们将其称为”驱动动画”。
驱动动画的图像 ID 用于在另一个纹理中查找图像。 因此,确保纹理之间的帧 ID 匹配非常重要。
例如,如果您的 diffuse.atlas
有一个 run
动画,如下所示:
run:
/main/images/hero_run_color_1.png
/main/images/hero_run_color_2.png
...
那么帧 ID 将是 run/hero_run_color_1
,这不太可能在 normal.atlas
中找到:
run:
/main/images/hero_run_normal_1.png
/main/images/hero_run_normal_2.png
...
因此,我们在图集中使用重命名模式
来重命名它们。
在相应的图集中设置 _color=
和 _normal=
,您将在两个图集中得到如下帧名:
run/hero_run_1
run/hero_run_2
...
UV 取自第一个纹理。由于只有一组顶点,如果次级纹理有更多 UV 坐标或不同形状,我们无法保证良好的匹配。
这一点很重要,因此请确保图像具有足够相似的形状,否则您可能会遇到纹理渗色。
每个纹理中图像的尺寸可能不同。
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB