我有一個關于回圈中的協程的問題。更具體地說,我如何實作我的回圈繼續檢查條件,直到協程中的 waitForSeconds 結束。
我附上了我的代碼的螢屏截圖。我的問題是在 myAudio.Play(); 之后立即顯示了“現在我被執行了”這一行。這是有道理的,因為協程只在 yield 回傳之后等待陳述句,但我怎樣才能讓它與 for 回圈一起作業?
任何幫助,將不勝感激!非常感謝。

uj5u.com熱心網友回復:
StartCoroutine每個IEnumerator作為一個新的協程開始,并立即與其余代碼連續。
因此,如果沒有進一步的代碼背景關系,您會做的事情就像
private void playDBStack()
{
fillList();
StartCoroutine(playDBStackRoutine())
}
private IEnumerator playDBStackRoutine()
{
for(var i = 0; i < 2; i )
{
// executes playAudio and waits for it to finish
yield return playAudio();
}
}
private IEnumerator playAudio()
{
var x = chooseList(score);
// executes PlayAndWait and wait for it to finish
yield return PlayAndWait(x);
}
通過這種方式,您執行并同時等待IEnumerators 完成,然后再轉到下一個。
一些進一步的說明:
線
myAudio.GetComponent<AudioSource>();什么都不做。
updateScore當前狀態下的整個方法可以簡單地替換為使用score ;我會考慮一種可以用簡單的運算子“代碼氣味”代替的方法;)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/332871.html
上一篇:UnityPlayer通過物件
