【发布时间】:2018-05-24 13:27:04
【问题描述】:
早上好,我正在做一个问答游戏,每个主题有 6 个问题。我想让问题随机(也没有重复),在我完成 6 个问题后给出最终成绩。
我尝试使用 Random.Range,但它不起作用,因为有时我只跑了大约 2、3 或 1 个问题并很快进入笔记屏幕,我看到一些关于制作列表的主题 Shuffle 也尝试过,但 Shuffle 没有出现在我的脚本中并且减去了 .Count 命令,所以我不知道它是否会起作用。
有人可以帮帮我吗?好吧,我知之甚少,也不知道如何正确使用 Shuffle。如果他们能详细谈谈或发送更正的脚本,我将不胜感激。预先感谢您的关注和理解,对于任何拼写错误,我深表歉意我是巴西人,我使用谷歌翻译器翻译了该消息。
这是我用来提问和回答的完整脚本。
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.SceneManagement;
public class responder : MonoBehaviour {
private int idTema;
public Text pergunta;
public Text respostaA;
public Text respostaB;
public Text respostaC;
public Text respostaD;
public Text InfoRespostas;
public string[] perguntas; //armazena todas as perguntas
public string[] alternativaA; //armazena todas as alternativas A
public string[] alternativaB; //armazena todas as alternativas B
public string[] alternativaC; //armazena todas as alternativas C
public string[] alternativaD; //armazena todas as alternativas D
public string[] corretas; //armazena todas as alternativas corretas
private int idPergunta;
private float acertos;
private float questoes;
private float media;
private int notaFinal;
// Use this for initialization
void Start ()
{
idTema = PlayerPrefs.GetInt ("idTema");
idPergunta = 0;
questoes = perguntas.Length;
pergunta.text = perguntas [idPergunta];
respostaA.text = alternativaA [idPergunta];
respostaB.text = alternativaB [idPergunta];
respostaC.text = alternativaC [idPergunta];
respostaD.text = alternativaD [idPergunta];
InfoRespostas.text = "Respondendo "+(idPergunta + 1).ToString()+" de "+questoes.ToString()+" perguntas.";
}
public void resposta (string alternativa)
{
if (alternativa == "A")
{
if (alternativaA [idPergunta] == corretas [idPergunta])
acertos += 1;
}
else if (alternativa == "B")
{
if (alternativaB [idPergunta] == corretas [idPergunta])
acertos += 1;
}
else if (alternativa == "C")
{
if (alternativaC [idPergunta] == corretas [idPergunta])
acertos += 1;
}
else if (alternativa == "D")
{
if (alternativaD [idPergunta] == corretas [idPergunta])
acertos += 1;
}
proximaPergunta ();
}
void proximaPergunta()
{
idPergunta += 1; /// se fosse 20 questões aqui seria 19
if(idPergunta <= (questoes-1))
{
pergunta.text = perguntas [idPergunta];
respostaA.text = alternativaA [idPergunta];
respostaB.text = alternativaB [idPergunta];
respostaC.text = alternativaC [idPergunta];
respostaD.text = alternativaD [idPergunta];
InfoRespostas.text = "Respondendo "+(idPergunta + 1).ToString()+" de "+questoes.ToString()+" perguntas.";
}
else
{
{
media = 10 * (acertos / questoes); //calcula a media com base no percentual de acerto
notaFinal = Mathf.RoundToInt(media); //calcula a nota para o proximo inteiro, segundo a regra da matematica
if(notaFinal > PlayerPrefs.GetInt("notaFinal"+idTema.ToString()))
{
PlayerPrefs.SetInt ("notaFinal" + idTema.ToString (), notaFinal);
PlayerPrefs.SetInt("acertos"+idTema.ToString(), (int) acertos);
}
PlayerPrefs.SetInt ("notaFinalTemp" + idTema.ToString (), notaFinal);
PlayerPrefs.SetInt("acertosTemp"+idTema.ToString(), (int) acertos);
SceneManager.LoadScene ("notaFinal");
}
}
}
}
【问题讨论】:
-
将您的问题存储在一个列表中,当您收到随机问题时,将其从列表中删除并将其存储在您的“提问”列表中。
-
只需要逐个滚动列表即可。没有真正需要删除。
-
请尽量将您的问题分解为问题,没有英文 cmets 没有人有时间阅读您的源代码。