gpt4 book ai didi

c# - 如何在 DOTween 中实现异步?

转载 作者:行者123 更新时间:2023-12-02 18:10:30 24 4
gpt4 key购买 nike

我正在制作一个使用 DOTween 弹出弹出屏幕的动画。

private void OnEnable()
{
dialogueBoxTransform.localScale = new Vector3(0.7f, 0.7f, 0.7f);
dialogueBoxTransform.DOScale(new Vector3(1.2f, 1.2f, 1.2f), 0.2f);
dialogueBoxTransform.DOScale(Vector3.one, 0.1f);
}

上面代码的问题在于 DOSCale() 方法之一被忽略了。

所以我尝试使用async-await 来实现它。

但是,当我使用 Task.Run() 时,它会抛出异常,因为它不是主线程。因此,在不使用 Task.Run() 的情况下,您应该解决它。

为此,我需要创建一个返回任务的方法,但我不知道该怎么做。

private async void OnEnable()
{
dialogueBoxTransform.localScale = new Vector3(0.7f, 0.7f, 0.7f);

await Test();

dialogueBoxTransform.DOScale(Vector3.one, 0.1f);
}

private Task Test()
{
dialogueBoxTransform.DOScale(new Vector3(1.2f, 1.2f, 1.2f), 0.2f);
return ???
}

如果能帮助我做什么,我将不胜感激。

最佳答案

正如@rbcode 提到的,您应该使用 Sequence。这是一个强大的工具,可让您组合补间、添加回调等。

在你的情况下它应该是这样的:

dialogueBoxTransform.localScale = new Vector3(0.7f, 0.7f, 0.7f);

var sequence = DOTween.Sequence();
sequence.Append(dialogueBoxTransform.DOScale(new Vector3(1.2f, 1.2f, 1.2f), 0.2f));
sequence.Append(dialogueBoxTransform.DOScale(Vector3.one, 0.1f));

sequence.Play();

如果你想在序列完成后执行代码,你可以在调用Play之前添加一个回调:

sequence.AppendCallback(() => {
//Insert your logic here.
});

sequence.Play();

关于c# - 如何在 DOTween 中实现异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72429226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com