How to make a randomize answer quiz game with IEnumerator in Unity?

40 views Asked by At
//data for display
{newQues = "abc"; string[] ans = { "abc", "bcd", "cde", "def" }; answer = "abc"; }

public IEnumerator DisplayQues() //use to display question
{
    yield return new WaitForSeconds(0.25f);
    Ques.GetComponent<Text>().text = newQues;

    ansNum = Random.Range(0, ans.Length);
    AnsA = ans[ansNum];
    ans = ans.Except(new string[] { ans[ansNum] }).ToArray();
    ansNum = Random.Range(0, ans.Length);
    AnsB = ans[ansNum];
    ans = ans.Except(new string[] { ans[ansNum] }).ToArray();
    ansNum = Random.Range(0, ans.Length);
    AnsC = ans[ansNum];
    ans = ans.Except(new string[] { ans[ansNum] }).ToArray();
    ansNum = Random.Range(0, ans.Length);
    AnsD = ans[ansNum];
    ans = ans.Except(new string[] { ans[ansNum] }).ToArray();

    AnswerA.GetComponent<Text>().text = AnsA;
    AnswerB.GetComponent<Text>().text = AnsB;
    AnswerC.GetComponent<Text>().text = AnsC;
    AnswerD.GetComponent<Text>().text = AnsD;
}

It show "NullReferenceException: Object reference not set to an instance of an object" when playing the scene.

There's an error occur in line ansNum = Random.Range(0, ans.Length);

How to replace these code?

ansNum = Random.Range(0, ans.Length);
AnsA = ans[ansNum];
ans = ans.Except(new string[] { ans[ansNum] }).ToArray();
ansNum = Random.Range(0, ans.Length);
AnsB = ans[ansNum];
ans = ans.Except(new string[] { ans[ansNum] }).ToArray();
ansNum = Random.Range(0, ans.Length);
AnsC = ans[ansNum];
ans = ans.Except(new string[] { ans[ansNum] }).ToArray();
ansNum = Random.Range(0, ans.Length);
AnsD = ans[ansNum];
ans = ans.Except(new string[] { ans[ansNum] }).ToArray();
0

There are 0 answers