HI, I have followed the Unity quiz Game Tutorial and would want to further improve the game. I would like to set it up so that the answers data are showing up randomly. Can anyone help me?
Here AnswerButton Script:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class AnswerButton : MonoBehaviour
{
public Text answerText;
private GameController gameController;
private AnswerData answerData;
void Start()
{
gameController = FindObjectOfType<GameController>();
}
public void SetUp(AnswerData data)
{
answerData = data;
answerText.text = answerData.answerText;
}
public void HandleClick()
{
gameController.AnswerButtonClicked(answerData.isCorrect);
}
}
Game Controller Script:
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*); // 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();
}
}