AnimatedSprite2D
Покадровый спрайт 2D с собственным курсором воспроизведения.
Воспроизводит именованные анимации из SpriteFrames. Ресурс хранит данные кадров, а эта Entity — имя клипа, Frame, FrameProgress и состояние воспроизведения. Общий ресурс не объединяет курсоры нескольких Entity, но изменение его кадров или FPS влияет на всех пользователей.
Play/Pause/Stop управляют курсором; IsPlaying может быть true при нулевой скорости. Замена SpriteFrames другим ресурсом останавливает воспроизведение. Спрайт не создаёт физическую форму или игровое событие сам по себе.
Полный пример с движением · Время и кадры.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
AnimatedSprite2DКонструктор
public AnimatedSprite2D();Свойства10
AnimationСвойство
public StringName Animation { get; set; }Имя выбранного клипа. Смена имени выбирает начальный кадр по направлению текущего проигрывания: первый при прямом, последний при обратном. Это не самостоятельная команда Play и не универсальный сброс к нулю.
AutoplayСвойство
public string Autoplay { get; set; }Ключ анимации, воспроизводимой при загрузке сцены.
CenteredСвойство
public bool Centered { get; set; }Если true, текстура будет центрирована.
Примечание: В играх с пиксельной эстетикой текстуры могут выглядеть деформированными при центрировании. Это вызвано их положением между пикселями. Чтобы предотвратить это, установите это свойство на false или рассмотрите возможность включения ProjectSettings.rendering/2d/snap/snap_2d_vertices_to_pixel и ProjectSettings.rendering/2d/snap/snap_2d_transforms_to_pixel.
FlipHСвойство
public bool FlipH { get; set; }Если true, текстура отражена по горизонтали.
FlipVСвойство
public bool FlipV { get; set; }Если true, текстура отражена по вертикали.
FrameСвойство
public int Frame { get; set; }Индекс отображаемого кадра. Присваивание также задаёт FrameProgress: 1 при отрицательном GetPlayingSpeed, иначе 0, в том числе на паузе. Чтобы сохранить заданную долю, используйте SetFrameAndProgress.
FrameProgressСвойство
public float FrameProgress { get; set; }Доля текущего кадра: при прямом ходе обычно растёт от 0 до 1, при обратном уменьшается от 1 до 0. Явно присвоенное значение не ограничивается этим диапазоном автоматически. Для обычного позиционирования передавайте [0,1].
OffsetСвойство
public Vector2 Offset { get; set; }Смещение текстуры.
SpeedScaleСвойство
public float SpeedScale { get; set; }Множитель скорости Entity. Направление задаёт знак произведения SpeedScale и customSpeed из Play. Ноль замораживает продвижение без команды Pause. Stop сохраняет SpeedScale. Это не FPS клипа.
SpriteFramesСвойство
public SpriteFrames SpriteFrames { get; set; }Источник кадров и клипов. Назначение другого ресурса останавливает воспроизведение и сбрасывает курсор; повторное назначение того же экземпляра ничего не сбрасывает. Изменения общего ресурса видны другим его пользователям.
Методы27
GetAnimationStringName
public StringName GetAnimation();StringNameGetAutoplaystring
public string GetAutoplay();stringGetFrameint
public int GetFrame();intGetFrameProgressfloat
public float GetFrameProgress();floatGetOffsetVector2
public Vector2 GetOffset();Vector2GetPlayingSpeedfloat
public float GetPlayingSpeed();Возвращает произведение SpeedScale и customSpeed при включённом проигрывании, иначе 0. В значение не входят FPS клипа и относительная длительность кадра.
floatМножитель со знаком: отрицательный для обратного хода, нулевой при паузе, остановке или нулевом произведении.
GetSpeedScalefloat
public float GetSpeedScale();floatGetSpriteFramesSpriteFrames
public SpriteFrames GetSpriteFrames();SpriteFramesIsCenteredbool
public bool IsCentered();boolIsFlippedHbool
public bool IsFlippedH();boolIsFlippedVbool
public bool IsFlippedV();boolIsPlayingbool
public bool IsPlaying();Проверяет флаг проигрывания, а не изменение картинки. При нулевом SpeedScale, customSpeed или FPS результат может оставаться true. Pause, Stop и завершение однократного клипа выключают проигрывание.
booltrue при включённом проигрывании; само по себе не гарантирует смену кадров.
Pausevoid
public void Pause();Выключает проигрывание, сохраняя Frame и FrameProgress. Play того же клипа продолжает с этого места, но использует множитель customSpeed нового вызова. GetPlayingSpeed на паузе возвращает 0.
Playvoid
public void Play(StringName name = null, float customSpeed = 1f, bool fromEnd = false);Запускает существующий непустой клип. Смена имени устанавливает начало или конец по fromEnd. Для того же имени возобновляет курсор после Pause; каждый вызов заменяет customSpeed. Для явного перезапуска используйте Stop, затем Play.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | null |
customSpeed | float | 1f |
fromEnd | bool | false |
nameИмя клипа в SpriteFrames. Значение по умолчанию выбирает текущий клип; оно не означает первый клип библиотеки.
customSpeedМножитель этого вызова, умножаемый на SpeedScale. 0 не продвигает кадры, отрицательное произведение задаёт обратный ход. При следующем Play без аргумента снова используется 1.
fromEndНачать с конца при выборе нового клипа. Это положение курсора, а не команда обратного направления. Для того же клипа произвольную позицию задавайте SetFrameAndProgress.
PlayBackwardsvoid
public void PlayBackwards(StringName name = null);Сокращение Play(name, -1, true). Ожидаемый обратный ход получается при положительном SpeedScale; отрицательный SpeedScale меняет знак произведения обратно. После паузы тот же клип может продолжиться с сохранённого места.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | null |
nameИмя существующего клипа; значение по умолчанию использует текущий.
SetAnimationvoid
public void SetAnimation(StringName name);| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
SetAutoplayvoid
public void SetAutoplay(string name);| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
SetCenteredvoid
public void SetCentered(bool centered);| Имя | Тип | По умолчанию |
|---|---|---|
centered | bool | — |
SetFlipHvoid
public void SetFlipH(bool flipH);| Имя | Тип | По умолчанию |
|---|---|---|
flipH | bool | — |
SetFlipVvoid
public void SetFlipV(bool flipV);| Имя | Тип | По умолчанию |
|---|---|---|
flipV | bool | — |
SetFramevoid
public void SetFrame(int frame);| Имя | Тип | По умолчанию |
|---|---|---|
frame | int | — |
SetFrameAndProgressvoid
public void SetFrameAndProgress(int frame, float progress);Явно задаёт индекс и долю кадра, не меняя флаг проигрывания. При существующем клипе индекс ограничивается допустимыми кадрами; progress не ограничивается автоматически.
| Имя | Тип | По умолчанию |
|---|---|---|
frame | int | — |
progress | float | — |
frameИндекс с нуля. Отрицательный становится 0, превышающий последний допустимый — последним кадром существующего клипа.
progressДоля кадра. Обычно [0,1]: 0 — начало прямого хода, 1 — начало обратного. Метод сохраняет переданное значение без clamp.
SetFrameProgressvoid
public void SetFrameProgress(float progress);| Имя | Тип | По умолчанию |
|---|---|---|
progress | float | — |
SetOffsetvoid
public void SetOffset(Vector2 offset);| Имя | Тип | По умолчанию |
|---|---|---|
offset | Vector2 | — |
SetSpeedScalevoid
public void SetSpeedScale(float speedScale);| Имя | Тип | По умолчанию |
|---|---|---|
speedScale | float | — |
SetSpriteFramesvoid
public void SetSpriteFrames(SpriteFrames spriteFrames);| Имя | Тип | По умолчанию |
|---|---|---|
spriteFrames | SpriteFrames | — |
Stopvoid
public void Stop();Выключает проигрывание, сбрасывает Frame и FrameProgress в 0 и customSpeed в 1. Сохраняет SpeedScale и выбранное имя Animation. Для сохранения курсора используйте Pause.
Сигналы и события5
AnimationChangedСобытие
public event Action AnimationChanged;Вызывается при изменении AnimatedSprite2D.Animation.
AnimationFinishedСобытие
public event Action AnimationFinished;Уведомляет о достижении конца однократного клипа при прямом ходе или начала при обратном. Проигрывание при этом ставится на паузу у границы. Для циклов используйте AnimationLooped; ожидание этого события у бесконечного цикла не завершится на очередном обороте.
AnimationLoopedСобытие
public event Action AnimationLooped;Уведомляет о переходе через границу циклического клипа. Для Pingpong переход меняет направление, для Linear начинает новый проход. Это не AnimationFinished и не самостоятельное игровое событие.
FrameChangedСобытие
public event Action FrameChanged;Уведомление спрайта об изменении кадра, в том числе при ручной установке курсора. Не используйте как счётчик кадров экрана или гарантию одного игрового эффекта на действие.
SpriteFramesChangedСобытие
public event Action SpriteFramesChanged;Вызывается при изменении AnimatedSprite2D.SpriteFrames.