Описание
AnimationEvent позволяет вызывать функцию скрипта, аналогичную SendMessage, как часть воспроизведения анимации.
Анимационные события поддерживают функции, которые принимают ноль или один параметр. Параметр может быть числом с плавающей запятой, целым числом, строкой, ссылкой на объект или AnimationEvent.
// Пример AnimationEvent
// Небольшой пример, который можно вызывать для каждого указанного кадра.
// Код выполняется один раз за цикл анимации.
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour
{
public void PrintEvent()
{
Debug.Log("PrintEvent");
}
}
Приведенный ниже более подробный пример демонстрирует более сложный способ создания анимации. В этом примере скрипта осуществляется доступ к компоненту Animator
и из него получается Clip
. (Этот клип был настроен в окне анимации.) Клип длится 2 секунды. Создается событие AnimationEvent
с заданными параметрами. Параметры включают функцию PrintEvent()
, которая будет обрабатывать событие. Затем событие добавляется в клип. Все это происходит в Start()
. После запуска игры событие вызывается через 1,3 секунды, а затем повторяется каждые 2 секунды.
// Add an AnimationEvent to a GameObject that has an Animator
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour
{
public void Start()
{
// существующие компоненты на GameObjectAnimationClip clip;
Animator anim;
// создано новое событие
AnimationEvent evt;
evt = new AnimationEvent();
// помещаем некоторые параметры в AnimationEvent
// - вызвать функцию PrintEvent()
// - анимация на этом объекте длится 2 секунды
// и созданная здесь новая анимация
// настроено так, чтобы анимация происходила через 1,3 секунды
evt.intParameter = 12345;
evt.time = 1.3f;
evt.functionName = "PrintEvent";
// get the animation clip and add the AnimationEvent
anim = GetComponent<Animator>();
clip = anim.runtimeAnimatorController.animationClips[0];
clip.AddEvent(evt);
}
// функция, которая будет вызываться как событие
public void PrintEvent(int i)
{
print("PrintEvent: " + i + " called at: " + Time.time);
}
}
Свойства
animationState | Состояние анимации, вызвавшее это событие (только для чтения). |
animatorClipInfo | Информация о клипе аниматора, относящаяся к этому событию (только для чтения). |
animatorStateInfo | Информация о состоянии аниматора, относящаяся к этому событию (только для чтения). |
floatParameter | Плавающий параметр, который хранится в событии и будет отправлен в функцию. |
functionName | Имя функции, которая будет вызываться. |
intParameter | Параметр Int, который хранится в событии и будет отправлен в функцию. |
isFiredByAnimator | Возвращает true, если это событие Animation было запущено компонентом Animator. |
isFiredByLegacy | Возвращает true, если это событие анимации было запущено компонентом анимации. |
messageOptions | Варианты вызова функции. |
objectReferenceParameter | Параметр ссылки на объект, который хранится в событии и будет отправлен в функцию. |
stringParameter | Строковый параметр, который хранится в событии и будет отправлен в функцию. |
time | Время, когда событие будет запущено. |
Конструкторы
AnimationEvent | Создает новое событие анимации. |