Unity3D——DoTween动画播放异常

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang_lvril/article/details/81607373

BUG出现原因:

  • 当一个DOTween动画播放时长大于0s;
  • 该动画还未播放完毕,便开启另一段动画;
  • 并调用该动画的关闭函数。

BUG:

      上一段本应该结束的动画,没有结束。

解决步骤:

  1. 为动画设置ID
  2. 在关闭此动画的方法调用 DOTween.Kill("ID");
public class TweenChange: MonoBehaviour {

    public void OnShow()
    {
        DOTween.Kill(transform.name);
        transform.DOScale(new Vector3(1.75f, 1.75f, 0), 0.3f).SetId(transform.name);
    }

    public void OnHide()
    {
        DOTween.Kill(transform.name);
        transform.DOScale(new Vector3(1.0f, 1.0f, 0), 0.3f).SetId(transform.name);
    }
}

注意:

DOTween.Kill("name"); 根据设置的ID名字来关闭动画,它将会关闭该程序里面所有ID是"name"的动画。

因此,动画的名字ID尽量不要重复,要能体现改动画特点,以免出现关闭不该关闭的动画。


另一个方法:

此种写法不存在以上BUG。 但一个物体多个动画,暂时不会写。

public class TimeLineNavBtn : MonoBehaviour {

    private void Awake()
    {
        Tweener tweener = transform.DOScale(new Vector3(1.75f, 1.75f, 0), 0.3f);
        tweener.SetAutoKill(false); //自动销毁设为False,否则播放一次就不能播放了
        tweener.Pause();            //开始的时候,暂停状态,可以不设置,开始就播放。
    }

    public void OnShow()
    {
        transform.DOPlayForward();      //向前播放
    }

    public void OnHide()
    {
        transform.DOPlayBackwards();    //倒放
    }

}

猜你喜欢

转载自blog.csdn.net/wang_lvril/article/details/81607373