How can I await function in OnUpdate of Dotween
zrp2016 opened this issue · 1 comments
See code as following
_cameraTransform.DOMove(pos, doTweenTime).OnUpdate(() =>
{
await MoveEvent.Broadcast(_cameraTransform.position);//when camera move ,refresh some UI
}).OnComplete(() =>
{
_lockTouch = false;
finishCallback?.Invoke(src);
});
so how can I await "MoveEvent.Broadcast"(itself is awaitable) ?
Don't think it should be in the issues, because it isn't.
You have multiple approaches here. If you just want the code to compile, append the async
keyword to the lambda expression:
.OnUpdate(async () => { } )
Otherwise you can remove the await
keyword and append the .Forget()
method to the result of the Broadcast
method:
MoveEvent.Broadcast(_cameraTransform.position).Forget();
Or you can remove the await
keyword and ignore the compiler warning:
MoveEvent.Broadcast(_cameraTransform.position);
All of the above will do a "fire-and-forget" method. Meaning that the "OnUpdate" method will not wait for the end of the execution of your broadcast and depending on the duration of the broadcast method, it can receive multiple invocations.
If you want for each update to wait for the end of the execution, I don't think that DoTween is the way to go here. You'd rather implement the movement on your own with UniTasks (or Coroutines).