杀死当前的 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 ()
。
我正在尝试 运行 一个 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
方法中,您使用行
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 ()
。