Derzeit entwickle ich ein Quiz-Spiel für mein Gamification-Projekt. wo ich das eigentliche Spiel einfriere, wenn der Spieler eine Punktzahl erreicht und eine Frage erscheint. Wenn die Antwort richtig ist, erhöht es die Geschwindigkeit des Players. Und es wird in einer Schleife passieren.Wie man zufällige Daten erzeugt, ohne in Einheit zu wiederholen C#
Hier verwende ich Loadscene, um die Index-Szene zu laden, um die Wiederholung von Fragen zu vermeiden. Das Problem hier ist, wenn die Szene geladen ist, lädt das ganze Spiel neu, anstatt den Quizteil neu zu laden. Gibt es einen Weg, es zu tun?
public class GameManager : MonoBehaviour
{
public Question[] facts;
private static List<Question> unansweredfacts;
private Question currentfacts;
[SerializeField]
private Text FactText;
[SerializeField]
private float TimeBetweenFacts = 3f;
[SerializeField]
private Text TrueAnswerText;
[SerializeField]
private Text FalseAnswerText;
[SerializeField]
private Animator animator;
[SerializeField]
public GameObject canvasquiz;
void Start()
{
if (unansweredfacts == null || unansweredfacts.Count == 0)
{
unansweredfacts = facts.ToList<Question>();
}
SetCurrentfact();
Debug.Log(currentfacts.Fact + "is" + currentfacts.IsTrue);
}
void SetCurrentfact()
{
int RandomFactIndex = Random.Range(0, unansweredfacts.Count);
currentfacts = unansweredfacts[RandomFactIndex];
FactText.text = currentfacts.Fact;
if (currentfacts.IsTrue)
{
TrueAnswerText.text = "CORRECT !";
FalseAnswerText.text = "WRONG !";
}
else
{
TrueAnswerText.text = "WRONG !";
FalseAnswerText.text = "CORRECT !";
}
}
IEnumerator TransitionToNextFact()
{
unansweredfacts.Remove(currentfacts);
yield return new WaitForSeconds(TimeBetweenFacts);
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
public void UserSelectTrue()
{
animator.SetTrigger("True");
if (currentfacts.IsTrue)
{
Debug.Log("CORRECT !");
}
else
{
Debug.Log("WRONG !");
}
StartCoroutine(TransitionToNextFact());
}
public void UserSelectFalse()
{
animator.SetTrigger("False");
if (!currentfacts.IsTrue)
{
Debug.Log("CORRECT !");
}
else
{
Debug.Log("WRONG !");
}
StartCoroutine(TransitionToNextFact());
}
Mögliches Duplikat von [Randomize a List] (http://stackoverflow.com/questions/273313/randomize-a-listt) –