AnimationPlayer
Воспроизводит именованные клипы и управляет их временем.
Используйте Play() для запуска, Pause() для продолжения позже и Stop() для остановки со сбросом. Повторный Play() того же клипа не является повторным запуском с начала. Полный ключ включает имя библиотеки, кроме глобальной библиотеки с пустым именем.
Play() планирует применение значений; Advance(0) применяет позу сразу. Для безопасного предпросмотра используйте Seek(..., update: true, updateOnly: true). Когда теми же целями управляет AnimationTree, задавайте состояние дерева вместо параллельного Play().
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
AnimationPlayerКонструктор
public AnimationPlayer();Свойства16
AssignedAnimationСвойство
public StringName AssignedAnimation { get; set; }Имя назначенного клипа сохраняется и после остановки; чтение имени не доказывает активное воспроизведение. Присваивание при остановленном проигрывателе настраивает клип и время 0 без запуска; во время воспроизведения переключает клип.
AutoplayСвойство
public StringName Autoplay { get; set; }Ключ анимации, воспроизводимой при загрузке сцены.
ClearCacheOnStopСвойство
public bool ClearCacheOnStop { get; set; }Если true, кэш анимационных треков очищается, когда анимация остановлена или очередь воспроизведения опущена. false, кэш трека сохраняется, что может улучшить производительность, когда анимации часто начинаются и останавливаются.
CurrentAnimationСвойство
public StringName CurrentAnimation { get; set; }Ключ текущей воспроизводимой анимации. Если анимация не воспроизводится, значением свойства является пустая строка. Изменение этого значения не перезапускает анимацию. См. AnimationPlayer.Play для получения дополнительной информации о воспроизведении анимаций.
Примечание: Хотя это свойство отображается в Инспекторе, оно не предназначено для редактирования и не сохраняется в сцене. Это свойство в основном используется для получения текущей воспроизводимой анимации и внутренне для дорожек воспроизведения анимации. Для получения дополнительной информации см. Animation.
CurrentAnimationLengthСвойство
public double CurrentAnimationLength { get; }Продолжительность (в секундах) текущей воспроизводимой анимации.
CurrentAnimationPositionСвойство
public double CurrentAnimationPosition { get; }Время текущего клипа в секундах. Чтение без назначенного текущего клипа, например сразу после Stop(), выводит ошибку и возвращает 0; это не успешная проверка начальной позиции. Сначала назначьте клип через AssignedAnimation либо запустите Play(). Пауза сохраняет текущую позицию.
MethodCallModeСвойство
public AnimationPlayer.AnimationMethodCallMode MethodCallMode { get; set; }MovieQuitOnFinishСвойство
public bool MovieQuitOnFinish { get; set; }Если true и движок работает в режиме Создатель кино (см. MovieWriter), выходит из движка с помощью EntityTree.Quit, как только анимация завершит воспроизведение в этом AnimationPlayer. Сообщение выводится, когда движок завершает работу по этой причине.
Примечание: Это подчиняется той же логике, что и сигнал AnimationMixer.AnimationFinished, поэтому он не выйдет из движка, если анимация установлена как циклическая.
PlaybackActiveСвойство
public bool PlaybackActive { get; set; }PlaybackAutoCaptureСвойство
public bool PlaybackAutoCapture { get; set; }Если true, выполняет AnimationMixer.Capture перед воспроизведением автоматически. Это означает, что выполняется только AnimationPlayer.PlayWithCapture с аргументами по умолчанию вместо AnimationPlayer.Play.
Примечание: Интерполяция захвата выполняется только в том случае, если анимация содержит трек захвата. См. также Animation.UpdateMode.Capture.
PlaybackAutoCaptureDurationСвойство
public double PlaybackAutoCaptureDuration { get; set; }См. также AnimationPlayer.PlayWithCapture и AnimationMixer.Capture.
Если AnimationPlayer.PlaybackAutoCaptureDuration имеет отрицательное значение, длительность устанавливается на интервал между текущей позицией и первым ключом.
PlaybackAutoCaptureEaseTypeСвойство
public Tween.EaseType PlaybackAutoCaptureEaseType { get; set; }Тип легкости интерполяции захвата. См. также Tween.EaseType.
PlaybackAutoCaptureTransitionTypeСвойство
public Tween.TransitionType PlaybackAutoCaptureTransitionType { get; set; }Тип перехода интерполяции захвата. См. также Tween.TransitionType.
PlaybackDefaultBlendTimeСвойство
public double PlaybackDefaultBlendTime { get; set; }Время по умолчанию для смешивания анимаций. Диапазон от 0 до 4096 с точностью 0,01.
PlaybackProcessModeСвойство
public AnimationPlayer.AnimationProcessCallback PlaybackProcessMode { get; set; }SpeedScaleСвойство
public float SpeedScale { get; set; }Коэффициент масштабирования скорости. Например, если это значение равно 1, то анимация воспроизводится с нормальной скоростью. Если это 0.5, то она воспроизводится с половинной скоростью. Если это 2, то она воспроизводится с двойной скоростью.
Если установлено отрицательное значение, анимация воспроизводится в обратном направлении. Если установлено значение 0, анимация не будет продвигаться.
Методы60
AnimationGetNextStringName
public StringName AnimationGetNext(StringName animationFrom);Возвращает ключ анимации, которая ставится в очередь на воспроизведение после анимации animation_from.
| Имя | Тип | По умолчанию |
|---|---|---|
animationFrom | StringName | — |
StringNameAnimationSetNextvoid
public void AnimationSetNext(StringName animationFrom, StringName animationTo);Запускает анимацию animation_to после завершения анимации animation_from.
| Имя | Тип | По умолчанию |
|---|---|---|
animationFrom | StringName | — |
animationTo | StringName | — |
ClearQueuevoid
public void ClearQueue();Очищает все поставленные в очередь невоспроизведенные анимации.
GetAssignedAnimationStringName
public StringName GetAssignedAnimation();StringNameGetAutoCaptureDurationdouble
public double GetAutoCaptureDuration();doubleGetAutoCaptureEaseTypeTween.EaseType
public Tween.EaseType GetAutoCaptureEaseType();Tween.EaseTypeGetAutoCaptureTransitionTypeTween.TransitionType
public Tween.TransitionType GetAutoCaptureTransitionType();Tween.TransitionTypeGetAutoplayStringName
public StringName GetAutoplay();StringNameGetBlendTimedouble
public double GetBlendTime(StringName animationFrom, StringName animationTo);Возвращает время смешивания (в секундах) между двумя анимациями, на которые ссылаются их ключи.
| Имя | Тип | По умолчанию |
|---|---|---|
animationFrom | StringName | — |
animationTo | StringName | — |
doubleGetCurrentAnimationStringName
public StringName GetCurrentAnimation();StringNameGetCurrentAnimationLengthdouble
public double GetCurrentAnimationLength();doubleGetCurrentAnimationPositiondouble
public double GetCurrentAnimationPosition();Время текущего клипа в секундах. Чтение без назначенного текущего клипа, например сразу после Stop(), выводит ошибку и возвращает 0; это не успешная проверка начальной позиции. Сначала назначьте клип через AssignedAnimation либо запустите Play(). Пауза сохраняет текущую позицию.
doubleGetDefaultBlendTimedouble
public double GetDefaultBlendTime();doubleGetMethodCallModeAnimationPlayer.AnimationMethodCallMode · Устарело
public AnimationPlayer.AnimationMethodCallMode GetMethodCallMode();Возвращает режим вызова, используемый для треков "Метод вызова".
AnimationPlayer.AnimationMethodCallModeGetPlayingSpeedfloat
public float GetPlayingSpeed();Возвращает фактическую скорость воспроизведения текущей анимации или 0, если не воспроизводится. Эта скорость — свойство AnimationPlayer.SpeedScale, умноженное на аргумент custom_speed, указанный при вызове метода AnimationPlayer.Play.
Возвращает отрицательное значение, если текущая анимация воспроизводится в обратном направлении.
floatGetProcessCallbackAnimationPlayer.AnimationProcessCallback · Устарело
public AnimationPlayer.AnimationProcessCallback GetProcessCallback();Возвращает уведомление о процессе, в котором необходимо обновить анимацию.
AnimationPlayer.AnimationProcessCallbackGetQueueReckfell.Collections.Array<StringName>
public Reckfell.Collections.Array<StringName> GetQueue();Возвращает список ключей анимации, которые в данный момент находятся в очереди на воспроизведение.
Reckfell.Collections.Array<StringName>GetRootEntityPath · Устарело
public EntityPath GetRoot();Возвращает узел, из которого будут перемещаться ссылки на пути узлов.
EntityPathGetSectionEndTimedouble
public double GetSectionEndTime();Возвращает время окончания воспроизводимого в данный момент раздела.
doubleGetSectionStartTimedouble
public double GetSectionStartTime();Возвращает время начала раздела, воспроизводимого в данный момент.
doubleGetSpeedScalefloat
public float GetSpeedScale();floatHasSectionbool
public bool HasSection();Возвращает true, если в данный момент воспроизводится анимация с секцией.
boolIsAnimationActivebool
public bool IsAnimationActive();Возвращает true Если анимация сейчас активна. Анимация активна, если она была проиграна с помощью метода AnimationPlayer.Play и еще не завершилась, или была остановлена с помощью метода AnimationPlayer.Stop.
Может быть использовано для проверки того что анимация на паузе или остановлена.
boolIsAutoCapturebool
public bool IsAutoCapture();boolIsClearCacheOnStopEnabledbool
public bool IsClearCacheOnStopEnabled();boolIsMovieQuitOnFinishEnabledbool
public bool IsMovieQuitOnFinishEnabled();boolIsPlayingbool
public bool IsPlaying();Показывает состояние воспроизведения, а не факт изменения позы или ненулевой скорости. При SpeedScale=0 может возвращать true. После Pause() возвращает false, хотя назначенный клип и его позиция сохранены.
boolPausevoid
public void Pause();Приостанавливает автоматическое воспроизведение, сохраняя позицию и позу. Play() без имени продолжает назначенный клип. Явный ручной Advance() всё ещё способен выполнить шаг; если вы управляете временем вручную, учитывайте паузу в вызывающем коде.
Playvoid
public void Play(StringName name = null, double customBlend = -1d, float customSpeed = 1f, bool fromEnd = false);Запускает клип по полному ключу библиотеки; пустое имя продолжает назначенный клип. Повторный Play() того же клипа не означает сброс в начало. Для явного повтора используйте Stop() и Play(). Обновление свойств произойдёт при обработке; Advance(0) применяет стартовую позу сразу. Итоговая скорость зависит также от SpeedScale.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | null |
customBlend | double | -1d |
customSpeed | float | 1f |
fromEnd | bool | false |
PlayBackwardsvoid
public void PlayBackwards(StringName name = null, double customBlend = -1d);Играет анимацию с ключом name Задний ход.
Этот метод является кратким для AnimationPlayer.Play при этом custom_speed = -1.0 и from_end = trueБолее подробную информацию см. в ее описании.
Примечание: Непрерывные дорожки, включая дорожки Animation.UpdateMode.Continuous, просто интерполяция в обратную временную линию, в то время как значение дорожки с Animation.UpdateMode.Discrete Применить ключ только в рамке, которую он пропускает, так что значение, удерживаемое между двумя ключами, может отличаться от воспроизведения вперёд.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | null |
customBlend | double | -1d |
PlaySectionvoid
public void PlaySection(StringName name = null, double startTime = -1d, double endTime = -1d, double customBlend = -1d, float customSpeed = 1f, bool fromEnd = false);Воспроизводит анимацию с ключом name и разделом, начинающимся с start_time и заканчивающимся на end_time. См. также AnimationPlayer.Play.
Установка start_time на значение вне диапазона анимации означает, что вместо этого будет использоваться начало анимации, а установка end_time на значение вне диапазона анимации означает, что вместо этого будет использоваться конец анимации. start_time не может быть равен end_time.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | null |
startTime | double | -1d |
endTime | double | -1d |
customBlend | double | -1d |
customSpeed | float | 1f |
fromEnd | bool | false |
PlaySectionBackwardsvoid
public void PlaySectionBackwards(StringName name = null, double startTime = -1d, double endTime = -1d, double customBlend = -1d);Воспроизводит анимацию с ключом name и разделом, начинающимся с start_time и заканчивающимся на end_time в обратном порядке.
Этот метод является сокращением для AnimationPlayer.PlaySection с custom_speed = -1.0 и from_end = true, см. его описание для получения дополнительной информации.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | null |
startTime | double | -1d |
endTime | double | -1d |
customBlend | double | -1d |
PlaySectionWithMarkersvoid
public void PlaySectionWithMarkers(StringName name = null, StringName startMarker = null, StringName endMarker = null, double customBlend = -1d, float customSpeed = 1f, bool fromEnd = false);Воспроизводит анимацию с ключом name и разделом, начинающимся с start_marker и заканчивающимся на end_marker.
Если начальный маркер пуст, раздел начинается с начала анимации. Если конечный маркер пуст, раздел заканчивается в конце анимации. См. также AnimationPlayer.Play.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | null |
startMarker | StringName | null |
endMarker | StringName | null |
customBlend | double | -1d |
customSpeed | float | 1f |
fromEnd | bool | false |
PlaySectionWithMarkersBackwardsvoid
public void PlaySectionWithMarkersBackwards(StringName name = null, StringName startMarker = null, StringName endMarker = null, double customBlend = -1d);Воспроизводит анимацию с ключом name и разделом, начинающимся с start_marker и заканчивающимся на end_marker в обратном порядке.
Этот метод является сокращением для AnimationPlayer.PlaySectionWithMarkers с custom_speed = -1.0 и from_end = true, см. его описание для получения дополнительной информации.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | null |
startMarker | StringName | null |
endMarker | StringName | null |
customBlend | double | -1d |
PlayWithCapturevoid
public void PlayWithCapture(StringName name = null, double duration = -1d, double customBlend = -1d, float customSpeed = 1f, bool fromEnd = false, Tween.TransitionType transType = Tween.TransitionType.Linear, Tween.EaseType easeType = Tween.EaseType.In);См. также AnimationMixer.Capture.
Вы можете использовать этот метод для использования более подробных параметров захвата, чем те, которые выполняются AnimationPlayer.PlaybackAutoCapture. Когда AnimationPlayer.PlaybackAutoCapture имеет значение false, этот метод почти такой же, как следующий:
capture(name, duration, trans_type, ease_type)
play(name, custom_blend, custom_speed, from_end)Если name пусто, он указывает AnimationPlayer.AssignedAnimation.
Если duration - отрицательное значение, продолжительность определяется интервалом между текущей позицией и первым ключом, когда from_end это true, вместо этого использует интервал между нынешним положением и последним ключом.
Примечание: :: duration принимает AnimationPlayer.SpeedScale принимая во внимание, но custom_speed Нет, потому что кэш с улавливанием интерполируется результатом смеси и результат может содержать несколько анимаций.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | null |
duration | double | -1d |
customBlend | double | -1d |
customSpeed | float | 1f |
fromEnd | bool | false |
transType | Tween.TransitionType | Tween.TransitionType.Linear |
easeType | Tween.EaseType | Tween.EaseType.In |
Queuevoid
public void Queue(StringName name);Ставит анимацию в очередь на воспроизведение после завершения текущей анимации и всех ранее поставленных в очередь анимаций. Примечание: Если в данный момент воспроизводится зацикленная анимация, поставленная в очередь анимация никогда не будет воспроизведена, если только зацикленная анимация не будет каким-либо образом остановлена.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
ResetSectionvoid
public void ResetSection();Сбрасывает текущую секцию. Ничего не делает, если раздел не был установлен.
Seek2 перегрузки
public void Seek(double seconds, bool update);Перегрузка перемотки без updateOnly. При update=true может вызвать метод ближайшего ключа; для предпросмотра без таких событий используйте трёхаргументный Seek(seconds, update:true, updateOnly:true).
| Имя | Тип | По умолчанию |
|---|---|---|
seconds | double | — |
update | bool | — |
public void Seek(double seconds, bool update = false, bool updateOnly = false);Перемещает время текущего клипа. update=true немедленно применяет позу; updateOnly=true исключает вызовы дорожек методов при таком обновлении. Обычный внешний seek способен вызвать ближайший метод-ключ и не проигрывает все пропущенные события. Перемотка к концу не заменяет нормальное завершение клипа.
| Имя | Тип | По умолчанию |
|---|---|---|
seconds | double | — |
update | bool | false |
updateOnly | bool | false |
SetAssignedAnimation2 перегрузки
public void SetAssignedAnimation(StringName animation);| Имя | Тип | По умолчанию |
|---|---|---|
animation | StringName | — |
public void SetAssignedAnimation(string animation);| Имя | Тип | По умолчанию |
|---|---|---|
animation | string | — |
SetAutoCapturevoid
public void SetAutoCapture(bool autoCapture);| Имя | Тип | По умолчанию |
|---|---|---|
autoCapture | bool | — |
SetAutoCaptureDurationvoid
public void SetAutoCaptureDuration(double autoCaptureDuration);| Имя | Тип | По умолчанию |
|---|---|---|
autoCaptureDuration | double | — |
SetAutoCaptureEaseTypevoid
public void SetAutoCaptureEaseType(Tween.EaseType autoCaptureEaseType);| Имя | Тип | По умолчанию |
|---|---|---|
autoCaptureEaseType | Tween.EaseType | — |
SetAutoCaptureTransitionTypevoid
public void SetAutoCaptureTransitionType(Tween.TransitionType autoCaptureTransitionType);| Имя | Тип | По умолчанию |
|---|---|---|
autoCaptureTransitionType | Tween.TransitionType | — |
SetAutoplay2 перегрузки
public void SetAutoplay(StringName name);| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
public void SetAutoplay(string name);| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
SetBlendTimevoid
public void SetBlendTime(StringName animationFrom, StringName animationTo, double sec);Указывает время смешивания (в секундах) между двумя анимациями, на которые ссылаются их ключи.
| Имя | Тип | По умолчанию |
|---|---|---|
animationFrom | StringName | — |
animationTo | StringName | — |
sec | double | — |
SetClearCacheOnStopEnabledvoid
public void SetClearCacheOnStopEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetCurrentAnimation2 перегрузки
public void SetCurrentAnimation(StringName animation);| Имя | Тип | По умолчанию |
|---|---|---|
animation | StringName | — |
public void SetCurrentAnimation(string animation);| Имя | Тип | По умолчанию |
|---|---|---|
animation | string | — |
SetDefaultBlendTimevoid
public void SetDefaultBlendTime(double sec);| Имя | Тип | По умолчанию |
|---|---|---|
sec | double | — |
SetMethodCallModevoid · Устарело
public void SetMethodCallMode(AnimationPlayer.AnimationMethodCallMode mode);Устанавливает режим вызова, используемый для треков "Метод вызова".
| Имя | Тип | По умолчанию |
|---|---|---|
mode | AnimationPlayer.AnimationMethodCallMode | — |
SetMovieQuitOnFinishEnabledvoid
public void SetMovieQuitOnFinishEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetProcessCallbackvoid · Устарело
public void SetProcessCallback(AnimationPlayer.AnimationProcessCallback mode);Устанавливает уведомление о процессе, в котором необходимо обновить анимацию.
| Имя | Тип | По умолчанию |
|---|---|---|
mode | AnimationPlayer.AnimationProcessCallback | — |
SetRootvoid · Устарело
public void SetRoot(EntityPath path);Устанавливает узел, из которого будут перемещаться ссылки на пути узлов.
| Имя | Тип | По умолчанию |
|---|---|---|
path | EntityPath | — |
SetSectionvoid
public void SetSection(double startTime = -1d, double endTime = -1d);Изменяет время начала и окончания воспроизводимого раздела. Текущая позиция воспроизведения будет зафиксирована в новом разделе. См. также AnimationPlayer.PlaySection.
| Имя | Тип | По умолчанию |
|---|---|---|
startTime | double | -1d |
endTime | double | -1d |
SetSectionWithMarkersvoid
public void SetSectionWithMarkers(StringName startMarker = null, StringName endMarker = null);Изменяет начальный и конечный маркеры воспроизводимого раздела. Текущая позиция воспроизведения будет зафиксирована в новом разделе. См. также AnimationPlayer.PlaySectionWithMarkers.
Если аргумент пустой, раздел использует начало или конец анимации. Если оба пусты, это означает, что раздел не установлен.
| Имя | Тип | По умолчанию |
|---|---|---|
startMarker | StringName | null |
endMarker | StringName | null |
SetSpeedScalevoid
public void SetSpeedScale(float speed);| Имя | Тип | По умолчанию |
|---|---|---|
speed | float | — |
Stopvoid
public void Stop(bool keepState = false);Останавливает воспроизведение, очищает очередь и сбрасывает время к началу текущей секции. По умолчанию применяется её начальная поза; keepState=true сохраняет применённые значения. Это не воспроизведение RESET и не событие AnimationFinished. После остановки текущая позиция недоступна, пока клип не назначен или запущен снова.
| Имя | Тип | По умолчанию |
|---|---|---|
keepState | bool | false |
Сигналы и события2
AnimationChangedСобытие
public event AnimationPlayer.AnimationChangedEventHandler AnimationChanged;Вызывается, когда анимация в очереди воспроизводится после завершения предыдущей анимации. См. также AnimationPlayer.Queue.
Примечание: Сигнал не вызывается, когда анимация изменяется через AnimationPlayer.Play или AnimationTree.
| Имя | Тип | По умолчанию |
|---|---|---|
oldName | StringName | — |
newName | StringName | — |
CurrentAnimationChangedСобытие
public event AnimationPlayer.CurrentAnimationChangedEventHandler CurrentAnimationChanged;Вызывается при изменении AnimationPlayer.CurrentAnimation.
| Имя | Тип | По умолчанию |
|---|---|---|
animName | StringName | — |
AnimationPlayer.AnimationMethodCallMode
| Значение | Описание |
|---|---|
Deferred = 0 | |
Immediate = 1 |
AnimationPlayer.AnimationProcessCallback
| Значение | Описание |
|---|---|
Idle = 1 | |
Manual = 2 | |
Physics = 0 |