unity 里 DOTweentimeScale = 0 后会导致Sequence 的回调不被触发
在Unity中,DOTween.timeScale是控制DOTween动画的时间缩放因子。将其设置为0会将动画暂停,导致Sequence的回调不被触发。这是因为DOTween的回调是根据时间来触发的,当时间缩放因子为0时,时间停止流动,因此回调不会被触发。
要解决这个问题,你可以考虑使用DOTween.Sequence().SetUpdate(true)来创建Sequence,这样可以将其设置为在Update中更新。然后使用Time.timeScale来控制整个游戏的时间缩放,而不是使用DOTween.timeScale。
以下是示例代码:
private Sequence mySequence;
void Start()
{
mySequence = DOTween.Sequence().SetUpdate(true);
// 添加Tween动画到Sequence中
// mySequence.Append(...);
// mySequence.Append(...);
// 设置回调
mySequence.OnComplete(() =>
{
Debug.Log("Sequence完成");
});
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Time.timeScale = 0; // 暂停游戏
}
else if (Input.GetKeyDown(KeyCode.R))
{
Time.timeScale = 1; // 恢复游戏
}
}
这样,当你将Time.timeScale设置为0时,游戏会暂停,但是DOTween的Sequence回调仍然会被触发。
原文地址: https://www.cveoy.top/t/topic/i5Yj 著作权归作者所有。请勿转载和采集!