Описание
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 | Создает новое событие анимации. |

