我正在制作一個使用 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 ???
}
我將不勝感激任何幫助。
uj5u.com熱心網友回復:
正如@rbcode 所提到的,您應該使用序列。它是一個強大的工具,允許您組合補間、添加回呼等。
在您的情況下,它應該如下所示:
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();
uj5u.com熱心網友回復:
使用 DOTween 的序列特性。第二個DOScale
命令被忽略,因為第一個命令還沒有完成。
uj5u.com熱心網友回復:
作為選項,您可以將https://github.com/Cysharp/UniTask#external-assets用于 DoTween 異步。它是免費且易于使用的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/483839.html
上一篇:C#使2個變數彼此相等
下一篇:如何修復布林值?