微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

杀死当前的 DoTween 序列

如何解决杀死当前的 DoTween 序列

我正在尝试运行 DoTween 并且它运行良好,但是当我想停止它时,它根本没有停止,它会一直运行直到完成。我正在使用 DoTween 序列来杀死它,但不知何故它不起作用。有什么问题?

public float prevValue = 0;
Sequence mySequence = DOTween.Sequence ();

    private void Update () {
        UpdateSlider ();
        if (Input.GetKeyDown (KeyCode.T)) {
            LerpToThis (90);
        } else if (Input.GetKeyDown (KeyCode.Z)) {
            KillSequence ();

        }
    }

 public void LerpTovalue (float newValue) {
        float myValue = prevValue;

            DOTween.To (() => myValue,x => prevValue = x,newValue,3.0f);

    }

    public void KillSequence () {
        mySequence.Kill ();
    }

解决方法

除了您的代码使用未声明的变量(如 ShouldLerp_)并且按下“T”时,您会调用与摘录中显示的方法不同的方法,我假设您的 LerpToThis 调用也可以使用 DOTween.To 进行补间,但是当您尝试停止补间时,您会调用 mySequence.Kill(),即使该序列不是进行补间的事情。所以这就是补间不停止的原因。

根据 Kill() 调用的结果调用 DOTween.To(),或者给该补间一个 Id 并改为调用 DOTween.Kill(id)

,

frankhermes 已经说了所有,我只是详细阐述一下解决方案:

LerpToValue 方法中,您使用线条创建一个 Tween

DOTween.To(() => myValue,x => prevValue = x,newValue,DurationFading);

方法 DOTween.To 确实返回一个 Tween 类型的对象,您可以在该对象上调用 Kill,即首先向类添加声明

private Tween myTween;

然后在 LerpToValue 中创建补间时将其存储

myTween = DOTween.To (() => myValue,DurationFading);

最后,在 KillSequence(您将要重命名,因为正如坦率所说,没有使用序列)您调用

myTween.Kill();

您可以完全摆脱 DOTween.Sequence ()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。