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

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

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

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

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

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值