BUG出现原因:
- 当一个DOTween动画播放时长大于0s;
- 该动画还未播放完毕,便开启另一段动画;
- 并调用该动画的关闭函数。
BUG:
上一段本应该结束的动画,没有结束。
解决步骤:
- 为动画设置ID
- 在关闭此动画的方法调用 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(); //倒放
}
}