Задать вопрос
MaximGS090909
@MaximGS090909

Как сделать, чтобы вопросы шли по порядку списка, либо убрать повторения их?

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

public class Test : MonoBehaviour
{

    public QuestionList[] questions;
    public TextMeshProUGUI[] answersText;
    public TextMeshProUGUI qText;
    public Button[] answerBttns = new Button[4];

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

    public void OnClickPlay()
    {
        qList = new List<object>(questions);
        questionGenerate();
       
    }
    void questionGenerate()
    {
        if (qList.Count > 0)
        {
            randQ = Random.Range(0, qList.Count);
            crntQ = qList[randQ] as QuestionList;
            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
        {
            Debug.Log("Вы прошли игру");
        }
    }
    public void AnswerBttns(int index)
    {
        if (answersText[index].text.ToString() == crntQ.answers[0])
        {
            Debug.Log("Правильный ответ");
            questionGenerate();
        }
        else Debug.Log("Неправильный ответ");
    }
}
[System.Serializable]
public class QuestionList
{
    public string question;
    public string[] answers = new string[4];
}

Сейчас вопросы идут через рандом, а я хочу сделать так, чтобы они шли по порядку в списке, ну или сделать так, чтобы они не повторялись
  • Вопрос задан
  • 73 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DrRen7
void questionGenerate()
    {
        if (qList.Count > 0)
        {
            randQ = Random.Range(0, qList.Count); //если не нужен рандом это удалить
            crntQ = qList[randQ] as QuestionList;
            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);
                                                         
            }
qList.RemoveAt(qList[randQ]);
                                              
        }
        else
        {
            Debug.Log("Вы прошли игру");
        }
    }


смысл в том что надо удалить уже заданный вопрос из листа где лежат все вопросы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы