Unity3D 代码动画添加事件
AnimationEvent类
添加事件的方法:代码添加
目的:
当某动画的Clip播放0.5秒后,触发自定义事件PrintEvent();
内容:
创建事件,并设置好传递的参数;事件与Clip绑定;自定义Event函数;
步骤:
1.创建一个动画事件
AnimationEvent evt = new AnimationEvent();
evt.functionName = "PrintEvent";
evt.intParameter = 12345;
evt.time = 1.3f;
2.具体的事件函数,自己写的函数
public void PrintEvent ( int i )
{
print("PrintEvent: " + i ); //自定义
}
3.具体绑定,一般绑在AnimationClip上
Animator anim;
AnimationClip clip;
anim = GetComponent<Animator>();
clip = anim.runtimeAnimatorController.animationClips[0];
clip.AddEvent(evt);
示例代码:
void Start()
{
AnimationEvent evt = new AnimationEvent();
evt.functionName = "PrintEvent";
evt.intParameter = 12345;
evt.time = 1.3f;
Animator animator = GetComponent<Animator>();
AddAnimationEvent(animator, "Idle", evt);
}
void AddAnimationEvent(Animator animator, string aniName, AnimationEvent evt)
{
if(animator == null) animator = GetComponent<Animator>();
AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
for (int i = 0; i < clips.Length; i++)
{
if (clips[i].name.Equals(aniName))
{
clips[i].AddEvent(evt);
}
}
}