当前位置: 代码迷 >> 综合 >> Unity3D新老动画的倒序播放
  详细解决方案

Unity3D新老动画的倒序播放

热度:73   发布时间:2024-01-24 10:52:01.0

在使用高版本unity的时候,自己制作动画时,默认添加Animator(新动画)组件,若是一般的单个动画正常播放,新老动画差不离,就业没有在意。后期制作过程中出现倒序播放的要求,找了好久才找到,原来新老动画倒序播放还是有些区别的!(终究还是个Low瓢\(^o^)/~)一起来看看吧!

一、老动画Animation

    设置指定动画的起始时间,播放速度,再执行播放方法即可

    正序:

 void PlayAnimation() {Animation _animation = this.GetComponent<Animation>();string animClip = "_main_window";_animation[animClip].time = 0;_animation[animClip].speed = 1f;_animation.Play(animClip);}

    倒序:

void RevertAnimation() {Animation _animation = this.GetComponent<Animation>();string animClip = "_main_window";_animation[animClip].time = _animation[animClip].clip.length;_animation[animClip].speed = -1f;_animation.Play(animClip);}

二、新动画Animator

    按理来说也就是播放速度speed设置成1或-1就能实现,可倒序时需要先运行Animator.StartPlayback()方法,不然speed会变为0,具体原因没找到,按字面理解大概是允许在动画播放状态下改变速度(不求甚解),新动画不用设置播放起始位置,具体代码如下:

    正序:

void PlayAnimator(){Animator ani = this.GetComponent<Animator>();ani.speed = 1f;ani.Play("_play_window_ani",0,1);//ani.SetFloat("_play_window_ani");}

    倒序:

void RevertAnimator(){Animator ani = this.GetComponent<Animator>();ani.StartPlayback();ani.speed = -1f;ani.Play("_play_window_ani",0,1);}

这也算是给自己做个笔记,错误的地方还望指正,感激不尽!

  相关解决方案