2016-08-15 64 views
0

我正在進行問答遊戲。我有10個問題,但在回答完所有問題後,它只是不斷產生問題,所以我想在這裏發生的只是回答10個問題,並轉到下一個面板或場景上的得分結果。 請幫幫我。停止生成問題

public Question[] questions; 
private static List<Question> unansweredQuestions; 

private Question currentQuestion; 

[SerializeField] 
private Text questionText; 

[SerializeField] 
private Text trueAnswerText; 

[SerializeField] 
private Text falseAnswerText; 

[SerializeField] 
private Animator animator; 

[SerializeField] 
private float timeBetweenQuestions = 1; 

void Start() 
{ 
    if (unansweredQuestions == null || unansweredQuestions.Count == 0) 
    { 
     unansweredQuestions = questions.ToList<Question>(); 
    } 

    SetCurrentQuestion(); 


} 

void SetCurrentQuestion() 
{ 
    int randomQuestionIndex = Random.Range (0, unansweredQuestions.Count); 
    currentQuestion = unansweredQuestions [randomQuestionIndex]; 

    questionText.text = currentQuestion.question; 

    if (currentQuestion.isTrue) 
    { 
     trueAnswerText.text = "CORRECT"; 
     falseAnswerText.text = "WRONG"; 
    }else 
    { 
     trueAnswerText.text = "WRONG"; 
     falseAnswerText.text = "CORRECT"; 

} 

}

IEnumerator TransitionToNextQuestion() 
{ 
    unansweredQuestions.Remove(currentQuestion); 

    yield return new WaitForSeconds (timeBetweenQuestions); 


    SceneManager.LoadScene (SceneManager.GetActiveScene().buildIndex); 

} 

public void UserSelectTrue() 
{ 
    animator.SetTrigger ("True"); 
    if (currentQuestion.isTrue) 
    { 
     Debug.Log ("CORRECT"); 
    } else 
    { 
     Debug.Log ("WRONG"); 
    } 

    StartCoroutine(TransitionToNextQuestion()); 
} 

public void UserSelectFalse() 
{ 
    animator.SetTrigger ("False"); 
    if (!currentQuestion.isTrue) 
    { 
     Debug.Log ("CORRECT"); 
    } else 
    { 
     Debug.Log ("WRONG"); 
    } 

    StartCoroutine(TransitionToNextQuestion()); 
} 

}

+0

我不確定單詞「直到」是你實際上的意思..「直到」繼續澆水,直到杯子已滿.. – BugFinder

+0

我的意思是,如果所有的10個問題都回答它將移動到下一個面板。 – Magillanica

+0

那麼你具體有什麼問題? – BugFinder

回答

0

由於沒有設置你的StartCoroutine我只能假設你想這是什麼

IEnumerator TransitionToNextQuestion() 
    { 
     if(unansweredQuestions.Count > 0) 
     { 
      unansweredQuestions.Remove(currentQuestion); 
      yield return new WaitForSeconds (timeBetweenQuestions); 
      SceneManager.LoadSceneSceneManager.GetActiveScene().buildIndex); 
     } else 
      //Move on 
    } 
+0

我的問題是即使我回答了所有問題,遊戲仍然會產生問題。這是解決方案嗎? – Magillanica

+0

我已經用這段代碼替換了我的IEnumerator,但它仍然在運行 – Magillanica

0

這就像每次重置場景時接下來的問題是你有空的未被應答的問題列表,並不斷從問題列表中重新創建它。

private static List<Question> unansweredQuestions; 

... 

void Start() 
{ 
    if (unansweredQuestions == null || unansweredQuestions.Count == 0) 
    { 
     unansweredQuestions = questions.ToList<Question>(); 
    } 

    SetCurrentQuestion(); 

} 

和新問題,你這樣做:

SceneManager.LoadScene (SceneManager.GetActiveScene().buildIndex); 

編輯: 更改此LoadScene()與SetCurrentQuestion();應該工作正常

+0

仍然無法工作,但我試過了:if(unansweredQuestions == null) 現在停止了,當我回答所有的問題,但它說「論據已超出範圍。」我想讓它移動到下一個菜單,比如分數統計後,我完成了回答所有問題 – Magillanica

+0

,然後嘗試如下所示: 'if(unusedweredQuestions.Count> 0) SetCurrentQuestion(); 其他 moveToNextMenu();' – Krajca

+0

我在 'moveToNextMenu()得到了一個錯誤;' 這裏是我的代碼 '無效的start() \t { \t \t如果(unnsweredQuestions == null) \t \t { \t \t \t未答覆的問題=提問。ToList (); \t \t} \t \t SetCurrentQuestion(); \t \t}' – Magillanica