Overview: Coroutines & Yield Manual     Reference     Scripting  
Scripting
Overview: コルーチンとイールド(Coroutines & Yield)

ゲームコードを記述する場合、スクリプトをイヴェントのシーケンスにする必要が多々あります。これは次のようなコード になります。

private var state = 0;
function Update()
{
if (state == 0) {
// do step 0
state = 1;
return;
}
if (state == 1) {
// do step 1
state = 2;
return;
}
// ...
}

これは、yieldを使うことで便利になります。yieldは特殊なreturnで、次回はyiedの後から処理が再 開されるようにします。

while(true) {
// do step 0
yield; // wait for one frame

// do step 1

yield; // wait for one frame
// ...

}

特別な値を渡して、Update関数が指定秒経過するのを待つことも出来ます。

// do something
yield WaitForSeconds(5.0); // wait for 5 seconds
// do something more...

コルーチンをスタックしたりチェーンしたり出来ます。

この例では、Do関数を実行しますが、それ以降の処理も即座に実行します。

Do ();
print ("This is printed immediately");

function Do()
{
print("Do now");
yield WaitForSeconds (2);
print("Do 2 seconds later");
}

この例では、Doを実行し、実行が終了するのを待ってから、続く処理を実行します。

// chain the coroutine
yield StartCoroutine("Do");
print("Also after 2 seconds");
print ("This is after the Do coroutine has finished execution");
function Do ()
{
print("Do now");
yield WaitForSeconds (2);
print("Do 2 seconds later");
}
//Any event handler can also be a coroutine

yieldをUpdateやFixedUpdateの中で用いることは出来ませんが、StartCoroutineを 用いて、yieldを使用する関数を実行することが可能です。

yieldの使用に関する詳細は、YieldInstruction, WaitForSeconds, WaitForFixedUpdate, Coroutine, MonoBehaviour.StartCoroutine を参照してください。