Earlier quoted context omitted.
...and then crash when any object it was using gets deleted while it's still running, like when the game changes scenes, but it becomes a manual, error-prone process to track down and stop all the coroutines holding on to references, that costs much more effort than it saves. I've been a serious Unity developer for 16 years, and I avoid coroutines like the plague, just like other architectural mistakes like stringly…
So if you need to conditionally tick something or you want to wait for an effect to finish, etc., you're using Update() with if() statements? The same code in a coroutine hits the same lifecycle failures as Update() anyway. You don't gain any safety by moving it to Update(). > No structured cancellation. Call StopCoroutine with the Coroutine object returned by StartCoroutine. Of course you can just pass around a canc…
Again, fine for pet projects on PC :)