Unity 6.3
0 онлайн 21 гостей 3 в системе
Вход

Animation.Play

Declaration

public bool Play(PlayMode mode = PlayMode.StopSameLayer);
public bool Play(string animation, PlayMode mode = PlayMode.StopSameLayer);

Возвращаемое значение

логическое Если имя не указано и анимация по умолчанию отсутствует, то этот метод возвращает false. В противном случае он возвращает true.

Описание

Воспроизведение анимации без смешивания.

Если имя не указано, то будет воспроизводиться анимация по умолчанию. Используйте дополнительные параметры PlayMode для выбора того, как эта анимация влияет на уже воспроизводимые анимации.

Если указанная анимация уже воспроизводится, то другие анимации будут остановлены, но анимация не будет перематывать до начала. Когда анимация заканчивается, она будет автоматически остановлена и перематывать до начала, если параметры PlayMode не установлены на Цикл. Если Animation.Play вызываются на объекте во время обновления кадра, где объект также деактивирован, тогда вызов будет фактически отменен. Анимация не начнёт воспроизводиться, когда объект будет позже реактивирован. Однако, если вызов на последующем кадре (когда объект все еще неактивен), то анимация начнет воспроизводиться после реактивации.

Для использования Animation.Play данные анимации должны быть видны в окне Inspector. Это окно содержит все анимации для GameObject в массиве. Например, две анимации jump и spin хранятся в списке Анимации. Animation.Play могут воспроизводить каждую из этих анимаций. Animation также могут комбинировать анимации. Для этого используется (неподдерживаемый и недокументированный) AnimationState.layer. Например, оставляя jump на слое 0 и перемещая spin на слой 123, они будут воспроизводиться вместе.

Анимации должны быть помечены как 'Legacy' в Inspector для того, чтобы анимации были найдены этим методом. Эта опция появляется после переключения окна Inspector на 'Debug'.

using UnityEngine;

// Animation.Play example. Let the S and J keys start // a spin or jump animation. Let Space play back spin and // jump at the same time. Let Z play spin and jump with // spin doubled in speed. // // Spin: rotate the cube 360 degrees in half or one second // Jump: bounce up to 2 units and down in one second // // Note: AnimationState.layer is no longer supported, but still exists.

public class ExampleScript : MonoBehaviour { private Animation anim;

void Start() { anim = gameObject.GetComponent<Animation>(); anim["spin"].layer = 123; }

// double the spin speed when true private bool fastSpin = false;

void Update() { // leave spin or jump to complete before changing if (anim.isPlaying) { return; }

if (Input.GetKeyDown(KeyCode.S)) { Debug.Log("Spinning"); anim.Play("spin"); }

if (Input.GetKeyDown(KeyCode.J)) { Debug.Log("Jumping"); anim.Play("jump"); }

// combine jump and spin if (Input.GetKeyDown(KeyCode.Space)) { Debug.Log("Jumping and spinning"); anim.Play("jump"); anim.Play("spin"); }

// have spin speed reverted to 1.0 second if (fastSpin == true) { anim["spin"].speed = 1.0f; fastSpin = false; }

if (Input.GetKeyDown(KeyCode.Z)) { Debug.Log("Jumping and spinning in half a second"); anim.Play("jump"); anim["spin"].speed = 2.0f; anim.Play("spin");

// we've used spin at a speed of two, now mark // the spin speed to revert back to one fastSpin = true; } } }