Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

SpriteFrames

繼承: Resource < RefCounted < Object

精靈影格庫,用於 AnimatedSprite2D 和 AnimatedSprite3D。

說明

AnimatedSprite2D 和 AnimatedSprite3D 節點的精靈影格庫。包含影格和用於播放的動畫資訊。

方法

void

add_animation(anim: StringName)

void

add_frame(anim: StringName, texture: Texture2D, duration: float = 1.0, at_position: int = -1)

void

clear(anim: StringName)

void

clear_all()

void

duplicate_animation(anim_from: StringName, anim_to: StringName)

bool

get_animation_loop(anim: StringName) const

LoopMode

get_animation_loop_mode(anim: StringName) const

PackedStringArray

get_animation_names() const

float

get_animation_speed(anim: StringName) const

int

get_frame_count(anim: StringName) const

float

get_frame_duration(anim: StringName, idx: int) const

Texture2D

get_frame_texture(anim: StringName, idx: int) const

bool

has_animation(anim: StringName) const

void

remove_animation(anim: StringName)

void

remove_frame(anim: StringName, idx: int)

void

rename_animation(anim: StringName, newname: StringName)

void

set_animation_loop(anim: StringName, loop: bool)

void

set_animation_loop_mode(anim: StringName, loop_mode: LoopMode)

void

set_animation_speed(anim: StringName, fps: float)

void

set_frame(anim: StringName, idx: int, texture: Texture2D, duration: float = 1.0)


列舉

enum LoopMode: 🔗

LoopMode LOOP_NONE = 0

動畫只播放一次,播放到末尾時就會停止;如果是倒放,則播放到開頭時停止。

LoopMode LOOP_LINEAR = 1

當動畫到達結尾時,會從開頭重新開始;如果逆序播放,則從結尾重新開始,從而實現連續不斷的循環。

LoopMode LOOP_PINGPONG = 2

動畫每次到達結尾或開頭時都會交替播放方向,反復進行正向播放和逆向播放。

注意: AnimatedSprite2D 和 AnimatedSprite3D 在動畫循環的每一端,僅播放一次首影格/尾影格的完整時長(而不是兩次,即不會在正向和逆向播放方向各播放一次)。


方法說明

void add_animation(anim: StringName) 🔗

向庫中新增新動畫 anim。


void add_frame(anim: StringName, texture: Texture2D, duration: float = 1.0, at_position: int = -1) 🔗

向 anim 動畫中新增一影格。如果 at_position 為 -1,則該影格會新增至該動畫的末尾。duration 指定的是相對時長,詳見 get_frame_duration()。


void clear(anim: StringName) 🔗

刪除 anim 動畫中的所有影格。


void clear_all() 🔗

移除所有動畫。將建立名為 default 的空動畫。


void duplicate_animation(anim_from: StringName, anim_to: StringName) 🔗

將動畫 anim_from 複製為名叫 anim_to 的新動畫。如果 anim_to 已存在或 anim_from 不存在則會失敗。


bool get_animation_loop(anim: StringName) const 🔗

已棄用: Use get_animation_loop_mode() instead.

如果 get_animation_loop_mode(anim) == LOOP_LINEAR(即取得到的動畫循環模式為線性循環),則回傳 true。否則,回傳 false。


LoopMode get_animation_loop_mode(anim: StringName) const 🔗

回傳 anim 動畫的循環模式。


PackedStringArray get_animation_names() const 🔗

返回一個包含每個動畫的名稱的陣列。值按字母順序排列。


float get_animation_speed(anim: StringName) const 🔗

返回 anim 動畫的速度,單位為影格每秒。


int get_frame_count(anim: StringName) const 🔗

返回 anim 動畫中的影格數。


float get_frame_duration(anim: StringName, idx: int) const 🔗

返回 anim 動畫中 idx 影格的相對持續時間(預設為 1.0)。例如,持續時間為 2.0 的影格的顯示長度是持續時間為 1.0 的影格的兩倍。可以使用如下公式計算某一影格的絕對持續時間(單位為秒):

absolute_duration = relative_duration / (animation_fps * abs(playing_speed))

在這個例子中,playing_speed 是 AnimatedSprite2D.get_playing_speed() 或 AnimatedSprite3D.get_playing_speed()。


Texture2D get_frame_texture(anim: StringName, idx: int) const 🔗

返回 anim 動畫中影格索引為 idx 的紋理。


bool has_animation(anim: StringName) const 🔗

如果 anim 動畫存在,則返回 true。


void remove_animation(anim: StringName) 🔗

移除 anim 動畫。


void remove_frame(anim: StringName, idx: int) 🔗

移除 anim 動畫中索引為 idx 的影格。


void rename_animation(anim: StringName, newname: StringName) 🔗

將 anim 動畫的名稱更改為 newname。


void set_animation_loop(anim: StringName, loop: bool) 🔗

已棄用: Use set_animation_loop_mode() instead.

如果 loop 為 false,則等同於 set_animation_loop_mode(LOOP_NONE);

如果 loop 為 true,則等同於 set_animation_loop_mode(LOOP_LINEAR)。


void set_animation_loop_mode(anim: StringName, loop_mode: LoopMode) 🔗

為 anim 動畫設定 loop_mode(循環模式)。


void set_animation_speed(anim: StringName, fps: float) 🔗

設定 anim 動畫的速度,單位為影格每秒。


void set_frame(anim: StringName, idx: int, texture: Texture2D, duration: float = 1.0) 🔗

設定 anim 動畫中索引為 idx 的影格的紋理 texture 和持續時間 duration。duration 指定的是相對時長,詳見 get_frame_duration()。