如何随机化答案Unity中的游戏测验?

时间:2018-03-13 14:56:04

标签: c# unity3d

我是Unity的新手 我遵循了Unity测验游戏教程我想设置它以便答案数据随机显示。任何人都可以帮助我吗?

    void ShowQuestion()
    {
        RemoveAnswerButtons();
        ChooseQuestion(); // random question is succsessfull

        QuestionData questionData = questionPool[questionIndex];                            // Get the QuestionData for the current question
        questionText.text = questionData.questionText;                                      // Update questionText with the correct text

        for (int i = 0; i < questionData.answers.Length; i++)                               // For every AnswerData in the current QuestionData...
        {
            GameObject answerButtonGameObject = answerButtonObjectPool.GetObject();         // Spawn an AnswerButton from the object pool
            answerButtonGameObjects.Add(answerButtonGameObject);
            answerButtonGameObject.transform.SetParent(answerButtonParent);
            answerButtonGameObject.transform.localScale = Vector3.one;

            AnswerButton answerButton = answerButtonGameObject.GetComponent<AnswerButton>();
            answerButton.SetUp(questionData.answers[i]);                                    // Pass the AnswerData to the AnswerButton so the AnswerButton knows what text to display and whether it is the correct answer
        }
    }

这是我的随机问题

void ChooseQuestion()
        {
            bool questionChosen = false;

            while(questionChosen != true) // While question chosen does not equal true
            {
                int random = Random.Range(0, questionPool.Length); // Choose a random number between 0 and the questionPool length

                if (!questionIndexesChosen.Contains(random)) // If the new list doesn't contain the number
                {
                    questionIndexesChosen.Add(random); // Add the number to the list
                    questionIndex = random; // Set the questionIndex to the number
                    questionChosen = true; // Set questionChosen to true to end the while loop
                }
          }
        }

        void RemoveAnswerButtons()
        {
            while (answerButtonGameObjects.Count > 0)                                            // Return all spawned AnswerButtons to the object pool
            {
                answerButtonObjectPool.ReturnObject(answerButtonGameObjects[0]);
                answerButtonGameObjects.RemoveAt(0);
            }
        }

        public void AnswerButtonClicked(bool isCorrect)
        {
            if (isCorrect)
            {
                playerScore += currentRoundData.pointsAddedForCorrectAnswer;                    // If the AnswerButton that was clicked was the correct answer, add points
                scoreDisplay.text = playerScore.ToString();
                scoreDisplay1.text = playerScore.ToString();
            }
            if(qNumber < questionPool.Length - 1)                                            // If there are more questions, show the next question
            {
                qNumber++;
                ShowQuestion();
            }
            else                                                                                // If there are no more questions, the round ends
            {
                EndRound();
            }
        }

不知何故,我被困在如何随机化答案。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

如果您只想随机化答案数组,使用LINQ可以执行类似的操作。

{{1}}