Unity 通过Animator获取动画长度 和 监听播放完成的代码

            AnimationClip[] clips =   GetComponent().runtimeAnimatorController.animationClips;
                foreach (var item in clips)
                {
                    if(item.name == "jump")
                    {
                     //   Debug.Log(item.length);
                    }
                }

通过Animator.runtimeAnimatorController.animationClips 可以获取所有的动画片段 ,再通过遍历 判断动画名称即可取得对应动画片段的长度了

            private AnimatorStateInfo stateInfo;
            stateInfo = GetComponent().GetCurrentAnimatorStateInfo(0);
            if (stateInfo.normalizedTime >= 0.95f&&stateInfo.IsName("jump"))
            {
                Debug.Log("cnm完成了");
            }

要判断动画是否播放完成 则可以通过动画层信息,stateInfo.normalizedTime 可以获得动画播放的状态 1表示播放到最后一帧,0表示第一帧 这里要注意的是,stateInfo 获取要放在update里面一直检测 就是这句话要一直被调用 否则会无效,stateInfo = GetComponent().GetCurrentAnimatorStateInfo(0);

你可能感兴趣的:(Unity 通过Animator获取动画长度 和 监听播放完成的代码)