我的代碼的要點遇到問題如下:重構一個IEnumerator方法多產量
// Play the first beat
audio.PlayOneShot(beat);
// Show 1st heartbeat border flash
TweenAlpha.Begin(heartbeatPanel.gameObject, 0.1f, currentStress);
yield return new WaitForSeconds(0.1f);
TweenAlpha.Begin(heartbeatPanel.gameObject, 0.5f, 0);
yield return new WaitForSeconds(interval);
// Play the second beat
audio.PlayOneShot(beat);
// Show 2nd heartbeat border flash
TweenAlpha.Begin(heartbeatPanel.gameObject, 0.1f, currentStress);
yield return new WaitForSeconds(0.1f);
TweenAlpha.Begin(heartbeatPanel.gameObject, 0.5f, 0);
yield return new WaitForSeconds(interval * 2);
現在我想上面的代碼有2個呼叫分成單個的IEnumerator方法。
這是我想出了:
StartCoroutine(PlayBeat(currentStress, interval));
StartCoroutine(PlayBeat(currentStress, interval * 2));
// ...
IEnumerator PlayBeat(float currentStress, float interval)
{
audio.PlayOneShot(beat);
TweenAlpha.Begin(heartbeatPanel.gameObject, 0.1f, currentStress);
yield return new WaitForSeconds(0.1f);
TweenAlpha.Begin(heartbeatPanel.gameObject, 0.5f, 0);
yield return new WaitForSeconds(interval);
}
的問題,這是不是在拍他們正確的時間間隔發聲,兩者節拍響起在同一時間,因爲我有這些電話一個無限循環,Unity因爲沒有考慮間隔而崩潰。
將上述兩個重複的代碼塊提取到單個IEnumerator方法中的最佳方式是什麼?
你目前的代碼看起來很好(至少,沒有看到'StartCoroutine') - 問題是什麼? – 2013-03-12 08:56:29
在描述問題時,您能否比「不起作用」更具體? – ChrisF 2013-03-12 08:57:25
我說得對,你一次聽到兩個節拍? – Kay 2013-03-12 08:59:06