Indexoutofrangeexception: индекс находился вне границ массива -- единство
Привет ребята, я делаю тест игры на движке Unity. Я получаю ошибку типа IndexOutOfRangeException: Index был за пределами массива. Менеджер игр.GetRandomQuestion(). Коды есть:
//Variables private List<AnswerData> PickedAnswers = new List<AnswerData>(); private List<int> FinishedQuestions = new List<int>(); private int currentQuestion = 0;
//Methods Question GetRandomQuestion() { var randomIndex = GetRandomQuestionIndex(); currentQuestion = randomIndex; return data.Questions[currentQuestion]; } int GetRandomQuestionIndex() { var random = 0; if (FinishedQuestions.Count < data.Questions.Length) { do { random = UnityEngine.Random.Range(0, data.Questions.Length); } while (FinishedQuestions.Contains(random) || random == currentQuestion); } return random;
//Data Class [System.Serializable()] public class Data { public Question[] Questions = new Question[0]; public Data(){} public static void Write(Data data, string path) { XmlSerializer serializer = new XmlSerializer(typeof(Data)); using (Stream stream = new FileStream(path,FileMode.Create)) { serializer.Serialize(stream, data); } } public static Data Fetch(string filePath) { return Fetch(out bool result,filePath); } public static Data Fetch(out bool result, string filePath) { if (File.Exists(filePath)) { result = false; return new Data(); } XmlSerializer deserializer = new XmlSerializer(typeof(Data)); using (Stream stream = new FileStream(filePath, FileMode.Open)) { var data = (Data)deserializer.Deserialize(stream); result = true; return data; } } }
Что я уже пробовал:
Я не мог найти, где индекс выходит за пределы диапазона. Поэтому я ничего не мог сделать, кроме как поискать его в google.