DoTween -> DOVirtual.DelayedCall 方法:会在指定的延迟时间后执行回调,并且会创建一个新的 Tweener 对象,但它不会自动创建一个新的 Sequence。
上面是对 DOVirtual.DelayedCall 方法的描述,即每次延时运行一次 DOVirtual.DelayedCall 就会建立一个新的 Tweener 对象,今天就因为不知道它是每次都会新建Tween,导致出现奇怪的问题,整了半天!
如:未处理前,同时三次运行后效果如下,出现了三个事件,如果你只是想不论延迟多少次,只是想执行一个动画的时候,就会导致有问题。
DOVirtual.DelayedCall(Random.Range(1f, 6), () =>
{
Debug.Log("DelayedCall");
});
解决:
保存Tween对象,然后每次运行前先kill掉上次事件即可
public class Test : MonoBehaviour
{
private Tween mDelayCallTween;
void Start()
{
mDelayCallTween.Kill();
mDelayCallTween = DOVirtual.DelayedCall(Random.Range(1f, 6), () =>
{
Debug.Log("DelayedCall");
});
}
}