2016-01-19 52 views
1

我只是試圖做基本的狀態管理,以便程序不會直接運行,而是等待播放器的某種響應。現在它只是跳過while循環,而「Test1」行從不打印,它直接轉到「正在進行」。我確實有一些其他腳本正在運行,但是他們都沒有使用更新循環,並且不會影響這個腳本。Unity - 用協程管理狀態,在循環時不會確認

這是我的第一篇文章在這裏,請告訴我,如果有什麼東西我應該知道的政策等

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 

public class GameManager : MonoBehaviour { 

    public static int turn; 
    public float turnDelay = 1f; 
    private WaitForSeconds turnWait; 
    private bool turnOver = false; 

    void Start() 
    { 
     turnWait = new WaitForSeconds(turnDelay); 
     turn = 1; 

     ResetAndSetup(); 
     Debug.Log("Starting"); 
     StartCoroutine(GameLoop()); 
    } 

    IEnumerator GameLoop() 
    { 

     yield return StartCoroutine(RoundFirstPlayer()); 
     Debug.Log("Proceeding"); 
     yield return StartCoroutine(RoundSecondPlayer()); 
    } 

    private IEnumerator RoundFirstPlayer() 
    { 

     while (turnOver = false) 
     { 
      if (Input.GetKey(KeyCode.Space)) 
      { 
       turnOver = true; 
       Debug.Log("Test1"); 
      } 
      yield return null; 
     } 

     Debug.Log("Test2"); 
    } 

    private IEnumerator RoundSecondPlayer() 
    { 

     yield return null; 

    } 

    void ResetAndSetup() 
    { 
     ColumnManager.ResetColumns(); 
    } 

} 
+0

將標記更改爲** Unity3D ** –

回答

1

你犯了個小錯誤:

相反

while (turnOver = false) 

使用

while (!turnOver) 

while (turnOver == false) 
+0

天啊!我已經這麼久了。非常感謝你,你做了我的一天! –

+0

沒問題,祝你有美好的一天 –

+0

我想刪除這個問題,因爲我看不出它會給社區增加很多。但是當我按下刪除時,它會警告我不應該,而且我的帳戶可能會被阻止詢問。我該怎麼辦? –