我正在尝试运行一个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 ();
}发布于 2021-03-19 13:47:07
除了代码使用未声明的变量(如ShouldLerp_)和按'T‘时调用的方法与摘录中显示的不同之外,我将假设您的LerpToThis调用也使用DOTween.To,但是当您试图停止thing时,您调用mySequence.Kill(),即使这个序列不是要做的事情。所以这就是为什么吐温没有停止。
根据Kill()调用的结果调用DOTween.To(),或者在Id之间给出Id,然后调用DOTween.Kill(id)。
发布于 2021-03-21 16:38:21
弗兰克墨斯已经说了这一切,我只是在阐述一下解决办法:
在LerpToValue方法中,使用行创建一个吐温
DOTween.To(() => myValue , x => prevValue = x, newValue, DurationFading);方法DOTween.To确实返回一个类型为Tween的对象,您可以在该对象上调用Kill,即首先向类添加一个声明。
private Tween myTween;然后,当您在LerpToValue中创建它时,存储它。
myTween = DOTween.To (() => myValue , x => prevValue = x, newValue, DurationFading);最后,在KillSequence (您想重命名它,因为正如弗兰克提到的,没有使用序列)中,您调用
myTween.Kill();您可以完全摆脱DOTween.Sequence ()。
https://stackoverflow.com/questions/66708473
复制相似问题