yield は単体でも使用可能です。単体で使用した場合には1フレーム遅れてから実行されます。
そのため、以下の test() の様に無限ループの中で使用した場合には1フレーム毎に呼ばれる事になります。
※「Start」ボタンを押すとCoroutineの開始。「Stop」を押すとCoroutineが停止します。
function OnGUI () { if (GUI.Button(Rect(5, 5, 100, 100), "Start")) { StartCoroutine("test"); } if (GUI.Button(Rect(5, 110, 100, 100), "Stop")) { StopCoroutine("test"); } } function Update () { print("Update " + Time.time); } function test() { while(1) { yield; print("-----test " + Time.time); } }
Coroutineはこの様な動作をする為、マルチスレッドプログラムと似た処理を作る事が可能です。
Unity Script Reference – Overview: Coroutines & Yield
http://unity3d.com/support/documentation/ScriptReference/index.Coroutines_26_Yield.html