Unity performs many operations once per frame, including:
Input processing
Main update (including
Update()
)Main coroutine updates (including
yield return null
)Late update (including
LateUpdate()
)Scene rendering (quite a few steps)
Gizmo/UI rendering
End of frame (including
WaitForEndOfFrame
)
One returns just before rendering, the other returns just after (but just before the frame is displayed). When the difference isn't important, I usually use and recommend yield return null
, as it's closer to the way other Update
and coroutine functions work.