Animator.Play
Declaration
public void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);public void Play(int stateNameHash, int layer = -1, float normalizedTime = float.NegativeInfinity);Параметры
| Параметр | Описание |
|---|---|
| stateName | Имя состояния. |
| stateNameHash | Хеш-имя состояния. Если stateNameHash равен 0, метод меняет время текущего состояния. |
| слой | Индекс слоя. Если слой равен -1, воспроизводится первое состояние с заданным именем или хешем. |
| normalizedTime | Смещение времени между нулем и одним. |
Описание
Воспроизводит состояние.
Когда вы указываете имя состояния или строку, по которой формируется хеш, оно должно включать имя родительского слоя. Например, если у вас есть Bounce состояние в Base Layer, имя будет Base Layer.Bounce. Когда вы используете параметр stateName, этот метод вызывает Animator.StringToHash внутренне. Если вы часто используете этот метод с одним и тем же stateName, предварительно вычислите хэш и используйте параметр stateHashName для повышения производительности.
Параметр normalizedTime варьируется между 0 и 1. Если этот параметр оставлен на нуле, то Play будут работать как ожидалось. Можно дать другую начальную точку. Примером может быть normalizedTime, заданный как 0.5, означает, что анимация начинается с середины. Если переход из одного состояния переключается на другое, он может смешиваться, а может и нет. Если переход начинается на 0.75, он будет смешан с другим состоянием. Если переход не настроен, то Play будет продолжаться до 1.0 без изменений.
Следующий пример скрипта анимирует куб.
Этот куб имеет два состояния Animator, называемые Rest и Bounce. Пустая анимация воспроизводится в Rest состояние. При нажатии пробела куб переключается в Bounce состояние. Из-за этого куб дважды подпрыгивает вверх и вниз. Затем куб возвращается в Rest состояние. Поскольку Bounce выбран из скрипта Animator.Play, Transition не требуется. Однако возвращение из Bounce в Rest имеет Transition. Has Exit Time отмечен, чтобы Bounce продержался в течение одной секунды. Присоедините этот скрипт к GameObject, который вы хотите анимировать.
using UnityEngine; // Press the space key in Play Mode to switch to the Bounce state. [RequireComponent(typeof(Animator))] public class AnimatorPlayExample : MonoBehaviour { // The Animator component on the GameObject this script is attached to. Animator m_Animator; // Cache the hash of the bounce state. int m_BounceStateHash; void Start() { m_Animator = GetComponent<Animator>(); m_BounceStateHash = Animator.StringToHash("Base Layer.Bounce"); } void Update() { if (Input.GetKeyDown(KeyCode.Space)) { // Play Bounce but start at a quarter of the way through m_Animator.Play(m_BounceStateHash, 0, 0.25f); } } }
Дополнительные ресурсы: Animator.StringToHash для получения хэша из имени.