2016-08-27 64 views
-1

我想製作一個西蒙遊戲。很明顯,當顯示一種顏色時,應該等待一秒鐘左右。當遊戲展示你要做什麼時,我創建了一個腐肉鹼。在協程裏面,它應該先暫停,當我運行遊戲時,它會停下來。然後它會通過並選擇一種顏色和東西。然後它應該循環備份(我做了一個循環)並再次暫停,然後再做一切。問題是,暫停只是第一次。然後它顯示其他顏色半秒鐘後結束。我不明白爲什麼一旦它循環,似乎除了暫停之外什麼都做。這裏是我的代碼:Unity C#協程不工作

void Update() { 
    if (show == true) { 
     StartCoroutine(Show()); 
    } 
} 

IEnumerator Show() { 
    do { 
     yield return new WaitForSeconds(2f); 
     round ++; 

     if (round == 1) { 
      on = Random.Range(1,5); 
     } 

     if (round == 2) { 
      on = Random.Range(1,5); 
     } 

     if (round == 3) { 
      on = Random.Range(1,5); 
     } 

     if (round == 4) { 
      on = Random.Range(1,5); 
     } 

     // Turn on/off lights 
     if (on == 1) { 
      green.GetComponent<Renderer>().material = greenMat; 
     } 
     if (on != 1) { 
      green.GetComponent<Renderer>().material = greenOff; 
     } 
     if (on == 2) { 
      red.GetComponent<Renderer>().material = redMat; 
     } 
     if (on != 2) { 
      red.GetComponent<Renderer>().material = redOff; 
     } 
     if (on == 3) { 
      yellow.GetComponent<Renderer>().material = yellowMat; 
     } 
     if (on != 3) { 
      yellow.GetComponent<Renderer>().material = yellowOff; 
     } 
     if (on == 4) { 
      blue.GetComponent<Renderer>().material = blueMat; 
     } 
     if (on != 4) { 
      blue.GetComponent<Renderer>().material = blueOff; 
     } 
    }while(show == true); 
} 
+0

這很難理解你的問題和你的問題。我建議你改述你的問題,並說出你想做的事情,然後告訴我們現在發生了什麼。另外,在其他問題中不接受有用的答案會阻止人們幫助你。 – Programmer

回答

0

我寫了一個協程,它可以幫助你。把它放在開始。

IEnumerator Show() 
{ 
    while (true) // or show 
    { 
     yield return new WaitForSeconds(2f); 

     round ++; 
     if (round >= 1 && round <= 4) 
      on = Random.Range(1,5); 

     green.GetComponent<Renderer>().material = on == 1 ? greenMat : greenOff; 

     //Same for the other... 
    } 
}