Chcę utworzyć skrypt, który generuje liczbę losową (między 1 (min) a 9999 (max)), a następnie chcę, aby liczba losowa stała się nowym maxem dla tego samego dokładnego skryptu.

Czy istnieje sposób na stworzenie równania lub jakiś sposób, aby zrobić to nieskończenie (do 1).

Jedynym rozwiązaniem, z którym się pojawiłem:

private IEnumerator MyCoroutine()
{
    var a  = Random.Range(1, 9999 + 1);
    largeText.text = a.ToString();
    yield return new WaitForSeconds(2);
    if (a > 1)
    {
        var b  = Random.Range(1, a + 1);
        largeText.text = b.ToString();
        yield return new WaitForSeconds(2);
        if (b > 1)
        {
            //Then continues 'infinitely'
        }
    }
}

Jest to rozwiązanie, ale w końcu wpadłem w problem z niezwykle niepożądanym skryptem.

OFCOURSE Mam resztę, której potrzebuję z tym skryptem, a to działa, jednak chciałbym wiedzieć, czy jest łatwiejsza praca wokół, która nie obejmuje mi pisania linii 1M kodu.

Dziękuję Ci!

0
Kekoa 29 lipiec 2020, 08:04

1 odpowiedź

Najlepsza odpowiedź

Po prostu ponownie użyj tej samej zmiennej zamiast tworzyć nowy dla każdej "iteracji" i użyj pętli while:

private IEnumerator MyCoroutine()
{
    var currentRandom = 9999;

    while(currentRandom > 1)
    {
        currentRandom = Random.Range(1, currentRandom + 1)
        largeText.text = currentRandom.ToString();
        yield return new WaitForSeconds(2);
    }
}
2
derHugo 29 lipiec 2020, 08:26