当前位置:网站首页>unity 代码为动画注册事件

unity 代码为动画注册事件

2022-06-10 21:54:00 吴梓穆

我们可以为动画添加事件,来实现自动播放下一段动画之类的效果,代码如下

    private Animator animator;
    private AnimationClip[] clips; //所有的动画

    private void Awake()
    {
    
        animator = GetComponent<Animator>();
        clips = animator.runtimeAnimatorController.animationClips;

        AddAnimationEvent(clips, "EndEvent",1);
    }
    /// <summary>
    /// 为动画片段批量注册事件 clips动画片段的数组 eventName 自己定义的事件实例方法名 timeRate在动画播到什么时候执行
    /// </summary>
    private void AddAnimationEvent(AnimationClip [] clips,string eventName,float timeRate)
    {
    
        for (int i = 0; i < clips.Length; i++)
        {
    
            AnimationEvent _event = new AnimationEvent();
            _event.functionName = eventName;//设置绑定的事件名
            _event.time = clips[i].length * timeRate;//设置事件的触发时机 timeRate =1 即动画播放完成时触发
            clips[i].AddEvent(_event);
        }
    }
    /// <summary>
    /// 事件的实例方法
    /// </summary>
    private void EndEvent()
    {
    
        print("动画播放完成");
        //播完动画,根据选择,自动播放或不自动播放
        GameController.Instance.AutoPlay();
    }
原网站

版权声明
本文为[吴梓穆]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44568736/article/details/125203693