# Split tasks across frames with coroutines

> Split the execution of a task synchronously across multiple scenes with coroutines. This can be useful for tasks that should progress gradually over several frames, such as a fade out effect.

A coroutine is a method that can suspend execution and resume at a later time. In Unity, this means coroutines can start running in one frame and then resume in another, allowing you to spread tasks across several frames.

| **Topic**                                                                                                                                          | **Description**                                                                                                      |
| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **[Write and run coroutines](/engine/6000.3/manual/scripting/object-oriented-development/coroutines-section/coroutines.md)**                       | Write and run coroutine methods to do work that takes effect over several frames, such as a gradual fade-out effect. |
| **[Analyzing coroutines](/engine/6000.3/manual/scripting/object-oriented-development/coroutines-section/coroutines-analyzing.md)**                 | Analyze coroutine performance in the Unity Profiler.                                                                 |
| **[Yield instruction reference](/engine/6000.3/manual/scripting/object-oriented-development/coroutines-section/coroutines-yield-instructions.md)** | Yield different custom instructions in your coroutine methods to control when they resume.                           |

## Additional resources

* [Per frame updates](/engine/6000.3/manual/scripting/object-oriented-development/managing-time-and-frame-rate/time-per-frame-updates.md)
* [PlayerLoop API reference](/engine/6000.3/script-reference/unityengine/lowlevel/playerloop.md)
