IndexOutOfRangeException: Index was outside the bounds of the array

Делаю школьный проект на свободную тему. Решил сделать игру-викторину. Пишу в юнити на C#
Игра начинается с главного меню. После нажатия на кнопку “выезжает” панель выбора предметов (предметов 8 ). Я планировал написать практически идентичный скрипт для каждой кнопки выбора предметов. Первым предметом стало обществознание. Я написал скрипт. (Social Skript)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SocialSkript : MonoBehaviour
{
    public SocialList[] questions;
    public Text[] answersText;
    public Text qText;
    public GameObject qnapanel;

    List<object> qList;
    SocialList crntQ;
    int randQ;

    public void OnClickPlay()
    {
        qList = new List<object>(questions);
        questionGenerate();
        if (!qnapanel.GetComponent<Animator>().enabled) qnapanel.GetComponent<Animator>().enabled = true;
        else qnapanel.GetComponent<Animator>().SetTrigger("Inn");
    }
    void questionGenerate()
    {
        if (qList.Count > 0)
        {
            randQ = Random.Range(0, qList.Count);
            crntQ = qList[randQ] as SocialList;
            qText.text = crntQ.question;
            List<string> answers = new List<string>(crntQ.answers);
            for (int i = 0; i < crntQ.answers.Length; i++)
            {
                int rand = Random.Range(0, answers.Count);
                answersText[i].text = answers[rand];
                answers.RemoveAt(rand);
            }
        }
        else
        {
            print("Вы прошли игру!");
        }
    }
    public void AnswersBttns(int index)
    {
        if (answersText[index].text.ToString() == crntQ.answers[0]) print("Правильный ответ");
        else print("Неправильный ответ");
        qList.RemoveAt(randQ);
        questionGenerate();
    }
}
[System.Serializable]
public class SocialList
{
    public string question;
    public string[] answers = new string[4];
}

Прикрепил его к Кнопке “обществознание” и всё работало. Затем с помощью копипаста я написал второй скрипт, отличавшийся только тем, что массив “SosialList” я заменил на “MathList” и прикрепил его к кнопке “математика”. Второй скрипт получился такой:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class MathSkript : MonoBehaviour
{
    public MathList[] questions;
    public Text[] answersText;
    public Text qText;
    public GameObject qnapanel;

    List<object> qList;
    MathList crntQ;
    int randQ;

    public void OnClickPlay()
    {
        qList = new List<object>(questions);
        questionGenerate();
        if (!qnapanel.GetComponent<Animator>().enabled) qnapanel.GetComponent<Animator>().enabled = true;
        else qnapanel.GetComponent<Animator>().SetTrigger("Inn");
    }
    void questionGenerate()
    {
        if (qList.Count > 0)
        {
            randQ = Random.Range(0, qList.Count);
            crntQ = qList[randQ] as MathList;
            qText.text = crntQ.question;
            List<string> answers = new List<string>(crntQ.answers);
            for (int i = 0; i < crntQ.answers.Length; i++)
            {
                int rand = Random.Range(0, answers.Count);
                answersText[i].text = answers[rand];
                answers.RemoveAt(rand);
            }
        }
        else
        {
            print("Вы прошли игру!");
        }
    }
    public void AnswersBttns(int index)
    {
        if (answersText[index].text.ToString() == crntQ.answers[0]) print("Правильный ответ");
        else print("Неправильный ответ");
        qList.RemoveAt(randQ);
        questionGenerate();
    }
}
[System.Serializable]
public class MathList
{
    public string question;
    public string[] answers = new string[4];
}

После этого при нажатии на кнопку “математика” пишется ошибка:

IndexOutOfRangeException: Index was outside the bounds of the array.
MathSkript.questionGenerate () (at Assets/Skripts/MathSkript.cs:35)
MathSkript.OnClickPlay () (at Assets/Skripts/MathSkript.cs:20).

Помогите пожалуйста.
P.S. в программировании я практически ноль. Я думал, что создать игру будет гораздо проще,но ошибся, сдавать проект через несколько дней, а я не знаю что делать.
UPD: писал всё с помощью гайдов на ютубе.(я знаю, что так ничему нормально не научится, если не знать базу. Но я бы не успел всё сделать, начав бы учить С# с нуля.)

Извиняюсь. Код как-то странно вставился.

Что-то я не понял в чем отличие скриптов, скорее всего можно один скрипт повесить на все кнопки.

Ошибка о том, что answersText пустой (или мало элементов) тут

Скорее всего проблема на этом этапе

и у первого скрипта в инспекторе были добавлены элементы/задан размер для answersText.

Если он скриптом генерируется, то можно просто например так перед циклом

answersText = new Text[crntQ.answers.Length];

создать массив под нужное число элементов.


Перед вставкой кода/нажатием кнопки надо на новую строку перейти :slight_smile: (что логично, зачем вставлять первую строку кода прямо в строку с предыдущим текстом).
Ну или просто самому по три ` написать на пустой строке до и после.