Unity3D新老动画的倒序播放

在使用高版本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");
        //ani.runtimeAnimatorController.animationClips[0].length;
    }

    倒序:

void RevertAnimator(){

        Animator ani = this.GetComponent<Animator>();

        ani.StartPlayback();
        ani.speed = -1f;
        ani.Play("_play_window_ani",0,1);
    }

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


版权声明:本文为Whislee原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。