AnimatedTexture

已弃用: 该类在当前版本中无法正常工作,将来可能会被移除。目前没有等效的解决方法。

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

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

描述

AnimatedTexture是一种基于帧的动画资源格式,其中多个纹理可以自动链接,每帧都有预定义的延迟。与AnimationPlayer不同,它不是Item,但具有可在任何可以使用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支持的最大帧数。如果您的动画中需要更多帧数,请使用AnimationPlayer


属性说明

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的帧才是动画的一部分。