2016-08-15 1 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); 

EDIT: Изменение этого LoadScene() с SetCurrentQuestion(); должен хорошо работать

+0

все еще не работает, но я пробовал это: if (unansweredQuestions == null) теперь он останавливается, когда я отвечаю на все вопросы, но в нем говорится: «Аргумент отсутствует ассортимент." Я хочу, чтобы он перешел к следующему меню, например, по статистике очков после того, как я закончил отвечать на все вопросы – Magillanica

+0

, затем попробуйте что-то вроде этого: 'if (unansweredQuestions.Count> 0) SetCurrentQuestion(); еще moveToNextMenu(); ' – Krajca

+0

я получил ошибку на ' moveToNextMenu(); ' вот мой код ' аннулируются Start() \t { \t \t если (без ответаQuestions == null) \t \t { \t \t \t без ответаQuestions = вопросы.ToList (); \t \t} \t \t SetCurrentQuestion(); \t \t} ' – Magillanica

Смежные вопросы