StartCoroutine,協同程序,
可以想成是一種排成,
須搭配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");
}
//--------

 

arrow
arrow
    文章標籤
    StartCoroutine Unity
    全站熱搜

    WilsonYo 發表在 痞客邦 留言(0) 人氣()