AnimatedTexture

已弃用: This class does not work properly in current versions and may be removed in the future. There is currently no equivalent workaround.

继承: Texture2D < Texture < Resource < RefCounted < Object

用于简单帧动画的代理纹理。

描述

AnimatedTexture 是一种用于帧动画的资源格式,其中多个纹理可以自动链接,每个帧都有预定义的延迟。与 AnimationPlayerAnimatedSprite2D 不同,它不是 Node,但具有可在任何可以使用 Texture2D 资源的地方使用的优势,例如在 TileSet 中。

动画的播放由 speed_scale 属性以及每帧的持续时间(见 set_frame_duration)控制。动画是循环播放的,即它会在播放完最后一帧后自动从第 0 帧重新开始。

AnimatedTexture 目前要求所有帧的纹理具有相同的大小,否则较大的纹理将被裁剪以匹配最小的纹理。

注意:AnimatedTexture 不支持使用 AtlasTexture。 每个帧都需要是一个单独的 Texture2D

警告:当前的实现对于现代渲染器来说效率不高。

属性

int

current_frame

int

frames

1

bool

one_shot

false

bool

pause

false

bool

resource_local_to_scene

false (overrides Resource)

float

speed_scale

1.0

方法

float

get_frame_duration(frame: int) const

Texture2D

get_frame_texture(frame: int) const

void

set_frame_duration(frame: int, duration: float)

void

set_frame_texture(frame: int, texture: Texture2D)


常量

MAX_FRAMES = 256 🔗

AnimatedTexture 支持的最大帧数。如果动画需要更多帧,请使用 AnimationPlayerAnimatedSprite2D


属性说明

int current_frame 🔗

  • void set_current_frame(value: int)

  • int get_current_frame()

设置纹理的当前可见帧。在播放时设置此帧会重置当前帧时间,因此新选择的帧将播放为其配置的整个帧持续时间。


int frames = 1 🔗

  • void set_frames(value: int)

  • int get_frames()

动画中要使用的帧数。虽然你可以使用 set_frame_texture 独立创建帧,但是你需要为动画设置这个值,才能考虑到新帧。最大帧数为 MAX_FRAMES


bool one_shot = false 🔗

  • void set_one_shot(value: bool)

  • bool get_one_shot()

如果为 true,则动画将只播放一次,并且在到达结尾后将不会循环回到第一帧。请注意,到达终点不会将 pause 设置为 true


bool pause = false 🔗

  • void set_pause(value: bool)

  • bool get_pause()

如果为 true,则动画将暂停在当前位置(即 current_frame)。将此属性更改为 false 时,动画将从暂停处继续播放。


float speed_scale = 1.0 🔗

  • void set_speed_scale(value: float)

  • float get_speed_scale()

动画速度将乘以该值。如果设置为负值,则动画反向播放。


方法说明

float get_frame_duration(frame: int) const 🔗

返回给定的 frame 的持续时间,以秒为单位。


Texture2D get_frame_texture(frame: int) const 🔗

返回给定帧的 Texture2D


void set_frame_duration(frame: int, duration: float) 🔗

设置任何给定 frame 的持续时间。最终的持续时间受 speed_scale 影响。如果设置为 0,则该帧在播放过程中被跳过。


void set_frame_texture(frame: int, texture: Texture2D) 🔗

Texture2D 分配给给定的帧。帧 ID 从 0 开始,因此第一帧的 ID 为 0,动画的最后一帧的 ID 为 frames - 1。

最多可以定义 MAX_FRAMES 个纹理,但要记住,只有 0 到 frames - 1 的帧会成为动画的一部分。