可以想成是一種排成,
須搭配IEnumerator 與yield return使用,
以下範例為做一連串的動作,
需求:
啟動DoMotion的Function後,
在五秒時執行Wait的function,
接著在一個frame後執行Jump的function,
最後在10秒後執行Walk的funtion
//部分程式碼:--------
void Start () {
StartCoroutine(DoMotion());
}
IEnumerator DoMotion()
{
yield return new WaitForSeconds(5.0f); //五秒後繼續執行
Wait();
yield return null; //一個frame後繼續執行
Jump();
yield return new WaitForSeconds(10.0f); //10秒後執行
Walk();
}
void Wait()
{
Debug.Log ("Wait");
}
void Jump()
{
Debug.Log ("Jump");
}
void Walk()
{
Debug.Log ("Walk");
}
換一種StartCoroutine的使用方法,
以string的方式呼叫執行Function,
好處是可以在必要的時候停止StartCoroutine,
以下範例當跑至Jump時停止了DoMotion,
故Walk的function將不會被執行到。
//部分程式碼:------
void Start () {
StartCoroutine("DoMotion");
}
IEnumerator DoMotion()
{
yield return new WaitForSeconds(5.0f);
Wait();
yield return null;
Jump();
yield return new WaitForSeconds(10.0f);
Walk();
}
void Wait()
{
Debug.Log ("Wait");
}
void Jump()
{
StopCoroutine("DoMotion"); //停止了DoMotion的StartCoroutine
Debug.Log ("Jump");
}
void Walk()
{
Debug.Log ("Walk");
}
沒有留言:
張貼留言