我是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();
}
}
不知何故,我被困在如何随机化答案。有人能帮助我吗?
答案 0 :(得分:1)
如果您只想随机化答案数组,使用LINQ可以执行类似的操作。
{{1}}