杀死当前的 DoTween 序列

Killing the current DoTween sequence

我正在尝试 运行 一个 DoTween,它 运行 很好,但是当我想停止它时,它根本不会停止,它一直 运行ning 直到它完成。我正在使用 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(),即使该序列不是进行补间的对象。所以这就是补间不停歇的原因。

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

frankhermes 都说了,我只是详细说明一下解决方案:

LerpToValue 方法中,您使用行

创建一个 Tween
DOTween.To(() => myValue , x => prevValue = x, newValue, DurationFading);

方法 DOTween.To 执行 return 类型 Tween 的对象,您可以在其上调用 Kill,即首先您向 [=33= 添加声明]

private Tween myTween;

然后在 LerpToValue

中创建补间时将其存储
myTween = DOTween.To (() => myValue , x => prevValue = x, newValue, DurationFading);

最后,在 KillSequence 中(您需要重命名,因为正如 frank 提到的,没有使用序列)您调用

myTween.Kill();

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