Unity3D新老动画的倒序播放

半城伤御伤魂 提交于 2020-02-01 02:26:55

在使用高版本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);
    }

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!