AnimatedTexture
Устаревшая покадровая Texture2D; для нового кода выбирайте анимацию под задачу.
SDK 1.0.0 помечает весь класс Obsolete: реализация работает некорректно и может быть удалена. Это справочник существующего API, а не рекомендация для новых проектов. Для анимированного спрайта используйте AnimatedSprite2D и SpriteFrames; для смены свойства texture — AnimationPlayer. Эти решения не являются универсальной заменой ресурса во всех местах, принимающих Texture2D.
Ресурс хранит до 256 слотов текстур и длительностей. Frames включает первые N слотов; SetFrameTexture не увеличивает Frames. Индекс слота 0…255 отличается от допустимого CurrentFrame: 0…Frames-1. При уменьшении Frames сначала выберите допустимый CurrentFrame: setter Frames не сбрасывает индекс или таймер и не удаляет скрытые слоты. Все объекты, использующие один ресурс, разделяют его текущий кадр.
Для существующего ресурса настраивайте кадры при Pause=true, задавайте положительные конечные длительности, затем Frames и CurrentFrame, после этого снимайте паузу. Для остановки используйте Pause, не SpeedScale=0: текущий код при нулевом множителе получает нулевой лимит кадра и ветку обратного воспроизведения. Отрицательная ненулевая скорость задаёт обратное направление. OneShot удерживает крайний кадр, но не включает Pause и не предоставляет сигнал завершения.
По исходникам таймер обновляется при frame_pre_draw через часы ОС. Время добавляется и во время Pause; после снятия паузы возможен догоняющий переход. CurrentFrame сбрасывает накопленное время, даже при повторной установке того же индекса. Размер Texture2D берётся у текущего кадра, поэтому используйте одинаковые размеры, чтобы не менять геометрию потребителя. AtlasTexture не подходит как отдельный кадр: прокси получает RID без области атласа. Пустой слот не очищает ранее привязанный прокси; не считайте null прозрачным кадром.
Setters автоматически не испускают Resource.Changed и не пересылают изменения дочерней текстуры. В общем наборе выполнены 23 Windows headless-проверки состояния AnimatedTexture/MeshTexture; для этого класса проверены значения, слоты, ссылки и размеры. Тайминг воспроизведения, видимые кадры и корректность рендера не подтверждены.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
AnimatedTextureКонструктор
public AnimatedTexture();Создаёт собственный устаревший ресурс: Frames=1, CurrentFrame=0, Pause=false, OneShot=false, SpeedScale=1; все слоты null с длительностью 1 секунду. Для новых проектов не рекомендуется.
Свойства5
CurrentFrameСвойство
public int CurrentFrame { get; set; }Индекс текущего кадра 0…Frames-1. Каждая установка, даже того же значения, сбрасывает накопленное время; прокси обновляется при следующем render callback, не синхронно setter-ом.
FramesСвойство
public int Frames { get; set; }Число активных кадров 1…256. Не очищает неактивные слоты, не меняет CurrentFrame и не сбрасывает таймер. Перед уменьшением установите допустимый CurrentFrame.
OneShotСвойство
public bool OneShot { get; set; }Удерживает последний кадр при прямом ходе или первый при обратном. Само достижение края не устанавливает Pause и не испускает сигнал завершения.
PauseСвойство
public bool Pause { get; set; }Запрещает переходы между кадрами, не сбрасывая индекс. В текущем исходном коде время всё равно накапливается; после снятия возможен догоняющий переход. Не обещает точного продолжения с прежней фазы.
SpeedScaleСвойство
public float SpeedScale { get; set; }Множитель направления/скорости: допустим -1000 ≤ scale < 1000. Для ненулевого значения лимит кадра равен duration/abs(scale). Ноль не используйте как паузу: текущая реализация даёт нулевой лимит и обратную ветку. Используйте Pause.
Методы14
GetCurrentFrameint
public int GetCurrentFrame();Возвращает значение CurrentFrame. Индекс текущего кадра 0…Frames-1. Каждая установка, даже того же значения, сбрасывает накопленное время; прокси обновляется при следующем render callback, не синхронно setter-ом.
intТекущее значение CurrentFrame.
GetFrameDurationfloat
public float GetFrameDuration(int frame);Читает исходную длительность слота 0…255, без умножения на SpeedScale. Новый слот имеет 1 секунду.
| Имя | Тип | По умолчанию |
|---|---|---|
frame | int | — |
frameИндекс слота 0…255; он может быть вне активного Frames.
floatСохранённая длительность в секундах, без применения скорости.
GetFrameTextureTexture2D
public Texture2D GetFrameTexture(int frame);Возвращает общую текстуру слота 0…255, включая неактивные, либо null. Не копия: не освобождайте полученный алиас отдельно от используемого владельцем ресурса.
| Имя | Тип | По умолчанию |
|---|---|---|
frame | int | — |
frameИндекс слота 0…255; он может быть вне активного Frames.
Texture2DОбщий ресурс либо null; не независимая копия.
GetFramesint
public int GetFrames();Возвращает значение Frames. Число активных кадров 1…256. Не очищает неактивные слоты, не меняет CurrentFrame и не сбрасывает таймер. Перед уменьшением установите допустимый CurrentFrame.
intТекущее значение Frames.
GetOneShotbool
public bool GetOneShot();Возвращает значение OneShot. Удерживает последний кадр при прямом ходе или первый при обратном. Само достижение края не устанавливает Pause и не испускает сигнал завершения.
boolТекущее значение OneShot.
GetPausebool
public bool GetPause();Возвращает значение Pause. Запрещает переходы между кадрами, не сбрасывая индекс. В текущем исходном коде время всё равно накапливается; после снятия возможен догоняющий переход. Не обещает точного продолжения с прежней фазы.
boolТекущее значение Pause.
GetSpeedScalefloat
public float GetSpeedScale();Возвращает значение SpeedScale. Множитель направления/скорости: допустим -1000 ≤ scale < 1000. Для ненулевого значения лимит кадра равен duration/abs(scale). Ноль не используйте как паузу: текущая реализация даёт нулевой лимит и обратную ветку. Используйте Pause.
floatТекущее значение SpeedScale.
SetCurrentFramevoid
public void SetCurrentFrame(int frame);Устанавливает CurrentFrame. Индекс текущего кадра 0…Frames-1. Каждая установка, даже того же значения, сбрасывает накопленное время; прокси обновляется при следующем render callback, не синхронно setter-ом.
| Имя | Тип | По умолчанию |
|---|---|---|
frame | int | — |
frameИндекс 0…Frames-1; установка также сбрасывает время.
SetFrameDurationvoid
public void SetFrameDuration(int frame, float duration);Сохраняет длительность слота 0…255 в секундах. Setter не проверяет знак/конечность. Задавайте положительные конечные значения; 0 имеет нулевой лимит и может быть пропущен, отрицательные не являются поддержанным режимом воспроизведения.
| Имя | Тип | По умолчанию |
|---|---|---|
frame | int | — |
duration | float | — |
frameИндекс слота 0…255; он может быть вне активного Frames.
durationПоложительное конечное время в секундах до применения скорости.
SetFrameTexturevoid
public void SetFrameTexture(int frame, Texture2D texture);Сохраняет общую ссылку Texture2D в слоте 0…255 независимо от Frames. Не увеличивает Frames, не копирует текстуру; null очищает слот. Сам ресурс запрещён как кадр. AtlasTexture не поддерживается как обрезанный кадр.
| Имя | Тип | По умолчанию |
|---|---|---|
frame | int | — |
texture | Texture2D | — |
frameИндекс слота 0…255; он может быть вне активного Frames.
textureОбщая Texture2D либо null для очистки. Для кадра AnimatedTexture не используйте AtlasTexture или сам анимированный ресурс.
SetFramesvoid
public void SetFrames(int frames);Устанавливает Frames. Число активных кадров 1…256. Не очищает неактивные слоты, не меняет CurrentFrame и не сбрасывает таймер. Перед уменьшением установите допустимый CurrentFrame.
| Имя | Тип | По умолчанию |
|---|---|---|
frames | int | — |
framesЧисло активных слотов 1…256; заранее исправьте CurrentFrame при уменьшении.
SetOneShotvoid
public void SetOneShot(bool oneShot);Устанавливает OneShot. Удерживает последний кадр при прямом ходе или первый при обратном. Само достижение края не устанавливает Pause и не испускает сигнал завершения.
| Имя | Тип | По умолчанию |
|---|---|---|
oneShot | bool | — |
oneShottrue удерживает крайний кадр, false включает циклический переход.
SetPausevoid
public void SetPause(bool pause);Устанавливает Pause. Запрещает переходы между кадрами, не сбрасывая индекс. В текущем исходном коде время всё равно накапливается; после снятия возможен догоняющий переход. Не обещает точного продолжения с прежней фазы.
| Имя | Тип | По умолчанию |
|---|---|---|
pause | bool | — |
pausetrue запрещает переходы, false разрешает; накопленное время не очищается.
SetSpeedScalevoid
public void SetSpeedScale(float scale);Устанавливает SpeedScale. Множитель направления/скорости: допустим -1000 ≤ scale < 1000. Для ненулевого значения лимит кадра равен duration/abs(scale). Ноль не используйте как паузу: текущая реализация даёт нулевой лимит и обратную ветку. Используйте Pause.
| Имя | Тип | По умолчанию |
|---|---|---|
scale | float | — |
scaleКонечный ненулевой множитель -1000 ≤ scale < 1000. Для остановки задайте Pause.
Поля и константы1
MaxFramesПоле
public const long MaxFrames = 256;Ёмкость 256 слотов; C# const long. Не текущее Frames и не максимальный допустимый индекс: последний индекс 255.