DOTween.Kill接口返回实际杀死补间的个数。但是使用这个api不能杀死transform的序列补间。
DOTween.Kill (这);或者DOTween.Kill (transform);或者DOTween.Rewind api都不能杀死它。
发布于 2016-05-14 17:54:02
这是因为您正在尝试使用DoTween类本身。相反,您应该使用对序列的引用来终止它。
下面的代码
Sequence mySequence = DOTween.Sequence();
//Your code here
mySequence.Append(transform.DoMove(Vector3.right, 1).SetLoops(2, LoopType.Yoyo))
.Append(transform.DoMove(Vector3.up, 1).SetLoops(2, LoopType.Yoyo))
.OnComplete(() => {
Debug.Log("Done");
});
mySequence.Kill(); //Kill the sequence.发布于 2017-08-22 16:33:10
在我的例子中,sequence.Kill()不起作用,所以我尝试了Dotween.Kill(object targetOrId),它起作用了,也许你可以试一试。
发布于 2021-11-10 10:06:24
在我的例子中,对序列的引用丢失了,因此mySequence.Kill();无法找到并终止该序列。
发生这种情况的原因是,我反复调用从代码的两个不同部分播放mySequence的方法(这没有明显的视觉副作用,所以直到我调试时才注意到),但我只杀死了最后一个序列。
因此,事件的顺序是:
使用
如果这是一个常规的补间,一种“核心”的修复方法是调用DOTween.KillAll();但据我所知,它在序列上不起作用,而且它会杀死每一个补间,这可能不是你想要的。
因此有两种选择:
在终止之前,
私有Sequence sequence;private Guid uid;private void StartScalingAnimation() { if (sequence == null) //如果之前没有创建,则仅创建。{ sequence = DOTween.Sequence();sequence.Append(transform.DOScale( Vector2(1.1f,1.1f),1)).SetLoops(-1,LoopType.Yoyo);Debug.Log("sequence id is:“+ sequence.id);//如果你的序列在创建时获得了一个id,你可以缓存它并在以后用这个id杀死它。在我的例子中,一开始没有//自动给出id,所以我创建了一个。uid = System.Guid.NewGuid();sequence.id = uid;Debug.Log("sequence id now:“+ sequence.id);} sequence.Play();} private void StopScalingAnimation() { DOTween.Kill(uid);sequence = null;}
https://stackoverflow.com/questions/37214649
复制相似问题