This should be quite straight forward
private int selection = -1;
void Start()
{
ShowNextQuestion();
}
private void ShowNextQuestion()
{
selection++;
if(selection >= questions.Length - 1)
{
// You said you wanted to restart the questions so simply do
selection = 0;
}
question.text = questions[selection];
}
public void CheckAnswer()
{
if (answer.text.Equas(correctAnswer[selection]))
{
Debug.Log("Answer is Correct");
}
else
{
Debug.Log("Answer is not Correct");
}
ShowNextQuestion();
}
Let me tell you though that in general it's not a good idea to store questions and answers in two individual arrays.
- You can't really be sure that both individual arrays always have te same length
- you have double work when adding or removing a question in the middle
- Imagine later wanting to randomize the order of questions .. you lose track which answer belongs to which question
So I would suggest you rather couple them strong together in a type like
[Serializable]
public class Question
{
// Allow to edit these in the Inspector but nowhere else
[SerializeField] private string _text;
[SerializeField] private string _answer;
// Other classes may only read these
public string Text => _text;
public string Answer => _answer;
// Constructor
public Question(string text, string answer)
{
_text = text;
_answer = answer;
}
}
And now in your Component you rather set them via the Inspector or initialize them via
public Question[] questions = {
new Question("What is 10+10", "20"),
new Question("What is 20+20", "40"),
new Question("What is 30+30", "60"),
new Question("What is 40+40", "80"),
new Question("What is 50+50", "100")
};
Then of course you change the code accordingly to access these
private void ShowNextQuestion()
{
selection++;
if(selection >= questions.Length - 1)
{
// You said you wanted to restart the questions so simply do
selection = 0;
}
question.text = questions[selection].Text;
}
public void CheckAnswer()
{
if (answer.text.Equals(questions[selection].Answer))
{
Debug.Log("Answer is Correct");
}
else
{
Debug.Log("Answer is not Correct");
}
ShowNextQuestion();
}
Now as said this allows also to give your app a bit randomness by shuffling the questions before starting:
using System.Linq;
...
private void Start()
{
questions = questions.OrderBy(q => Random.value).ToArray();
ShowNextQuestion();
}
private void ShowNextQuestion()
{
selection++;
if(selection >= questions.Length - 1)
{
// You said you wanted to restart the questions so simply do
selection = 0;
questions = questions.OrderBy(q => Random.value).ToArray();
}
question.text = questions[selection].Text;
}