AnimationEvent 动画事件
描述:
AnimationEvent类似于SendMessage让你调用一个脚本函数,这个脚本是动画播放的一部分
动画事件函数支持0参数或一个参数,参数可以是浮点型,字符串,object或AnimationEvent。
变量 | 说明 |
---|---|
animationState | 该事件引发的动画状态(只读)。当该方法在动画事件回调之外被调用时,返回null。注意,该成员从动画组件(旧版)调用时,仅能设置。 |
animatorClipInfo | 与此事件有关的动画器剪辑信息(只读)。 |
animatorStateInfo | 有关该事件的动画器状态信息(只读)。 |
floatParameter | 浮点型参数,储存在该事件中并发送给函数。 |
functionName | 被调用的函数的名称。这与调用gameObject.SendMessage(animationEvent.functionName, animationEvent)相同 |
intParameter | 整数型参数,储存在事件中并发送给函数。 |
isFiredByAnimator | 如果该动画事件已经由Animator组件触发,返回true。 |
isFiredByLegacy | 如果该动画事件已经由Animation组件触发,返回true。 |
messageOptions | 函数调用选项。如果选项设置为 SendMessageOptions.RequireReceiver (默认),当消息没有被任何组件接收时打印一个错误信息. |
objectReferenceParameter | 储存在事件中的引用对象参数,并发送给函数。 |
stringParameter | 储存在该事件中的字符串参数,并发送给函数。 |
time | 引发该事件的时间点。 |
示例:
// Add an Animation Event to a GameObject that has an Animator
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
public void Start()
{
// existing components on the GameObject
AnimationClip clip;
Animator anim;
// new event created
AnimationEvent evt = new AnimationEvent();
// put some parameters on the AnimationEvent
// - call the function called PrintEvent()
// - the animation on this object lasts 2 seconds
// and the new animation created here is
// set up to happens 1.3s into the animation
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);
}
// the function to be called as an event
public void PrintEvent(int i) {
print("PrintEvent: " + i + " called at: " + Time.time);
}
}
🔚