作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个使用 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/
我是一名优秀的程序员,十分优秀!