A Coroutine will take all function and sub function ?

openyourmind(); will be considered as a coroutine ?

IEnumerator WaitAndRelax(float waitTime)
{
yield return new WaitForSeconds(waitTime);
dontworry();
}

void dontworry() {

  takeabreath();
  lookatthehorizon();
  bepeaceful();

}

void takeabreath () {

   openyourmind();
  Text breath = GameObject.Find("txt_breath").GetComponent<Text>();
  breath.text = "Sniiiiiiiiif";

}

No. The coroutine is WaitAndRelax in your example. The other functions, including openyour mind, are called during the coroutine, and are running because of it, at the timing and looping behavior your work in WaitAndRelax defines for it, but openyourmind is not, itself, a coroutine.

You can, for example, call openyourmind ( or takeabreath for that matter ), from any other code that has access (these aren’t public), but that are not called from within a coroutine.

It is possible, however, that we’re confused about vocabulary with each other. While openyourmind is not itself a coroutine, all functions a coroutine calls will execute as code within the coroutine. While those functions are not coroutines, they are executing from the coroutine.

This is the same for threads. Coroutines aren’t threads, but like a coroutine, a thread starts a function which is the main function of the thread, much like a coroutine is called as a specialized function. Any functions called from a thread are executing within that thread, but those called functions themselves aren’t threads and can be called outside the context of threads.