Coroutine Inherits from YieldInstruction

MonoBehaviour.StartCoroutine returns a Coroutine. Instances of this class are only used to reference these coroutines and do not hold any exposed properties or functions.

A coroutine is a function that can suspend its execution (yield) until the given given YieldInstruction finishes.

JavaScript
// - prints "Starting 0.0"
// - prints "WaitAndPrint 5.0"
// - prints "Done 5.0"
print ("Starting " + Time.time);
// Start function WaitAndPrint as a coroutine
yield WaitAndPrint();
print ("Done " + Time.time);
function WaitAndPrint () {
// suspend execution for 5 seconds
yield WaitForSeconds (5);
print ("WaitAndPrint "+ Time.time);
}

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
IEnumerator WaitAndPrint() {
yield return new WaitForSeconds(5);
print("WaitAndPrint " + Time.time);
}
IEnumerator Example() {
print("Starting " + Time.time);
yield return WaitAndPrint();
print("Done " + Time.time);
}
}

import UnityEngine
import System.Collections

class example(MonoBehaviour):

def WaitAndPrint() as IEnumerator:
yield WaitForSeconds(5)
print(('WaitAndPrint ' + Time.time))

def Example() as IEnumerator:
print(('Starting ' + Time.time))
yield WaitAndPrint()
print(('Done ' + Time.time))