• AnimationEvent 动画事件

    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引发该事件的时间点。

    示例:

    1. // Add an Animation Event to a GameObject that has an Animator
    2. using UnityEngine;
    3. using System.Collections;
    4. public class Example : MonoBehaviour {
    5. public void Start()
    6. {
    7. // existing components on the GameObject
    8. AnimationClip clip;
    9. Animator anim;
    10. // new event created
    11. AnimationEvent evt = new AnimationEvent();
    12. // put some parameters on the AnimationEvent
    13. // - call the function called PrintEvent()
    14. // - the animation on this object lasts 2 seconds
    15. // and the new animation created here is
    16. // set up to happens 1.3s into the animation
    17. evt.intParameter = 12345;
    18. evt.time = 1.3f;
    19. evt.functionName = "PrintEvent";
    20. // get the animation clip and add the AnimationEvent
    21. anim = GetComponent<Animator>();
    22. clip = anim.runtimeAnimatorController.animationClips[0];
    23. clip.AddEvent(evt);
    24. }
    25. // the function to be called as an event
    26. public void PrintEvent(int i) {
    27. print("PrintEvent: " + i + " called at: " + Time.time);
    28. }
    29. }

    ?