Wie machen die das Skript warten/schlafen in einer einfachen Art und Weise, in der Einheit
Wie kann zwischen TextUI.text = ....
eine sleep-Funktion, für die Wartezeit von 3 Sekunden zwischen jedem Satz?
public Text GuessUI;
public Text TextUI;
[...truncated...]
TextUI.text = "Welcome to Number Wizard!";
TextUI.text = ("The highest number you can pick is " + max);
TextUI.text = ("The lowest number you can pick is " + min);
Ich habe bereits versucht, verschiedene Dinge, aber hat nicht geklappt, so dieses:
TextUI.text = "Welcome to Number Wizard!";
yield WaitForSeconds (3);
TextUI.text = ("The highest number you can pick is " + max);
yield WaitForSeconds (3);
TextUI.text = ("The lowest number you can pick is " + min);
In die bash-Shell wäre:
echo "Welcome to Number Wizard!"
sleep 3
echo "The highest number you can pick is 1000"
sleep 3
.....
aber ich kann nicht herausgefunden, wie ich das in Unity mit C#
Was genau "nicht funktioniert" bedeutet?
yield WaitForSeconds (3); nicht funktionierte
Was genau "nicht funktioniert" bedeutet?
yield WaitForSeconds (3); nicht funktionierte
Was genau "nicht funktioniert" bedeutet?
InformationsquelleAutor DiogoSaraiva | 2015-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viele Möglichkeiten, zu warten, in der Einheit. Es ist wirklich einfach, aber ich denke es lohnt sich für die meisten Möglichkeiten, das zu tun diese:
1.Mit einer coroutine und
WaitForSeconds
.Das ist bei weitem der einfachste Weg. Setzen Sie den code, müssen Sie warten, für einige Zeit in eine coroutine Funktion, dann kann man darauf warten, mit
WaitForSeconds
. Beachten Sie, dass in coroutine Funktion, rufen Sie die Funktion mitStartCoroutine(yourFunction)
.Beispiel unten drehen um 90 Grad, warten Sie 4 Sekunden, drehen 40 Grad und warten Sie 2 Sekunden, und dann drehen, drehen Sie 20 Grad.
2.Mit einer coroutine und
WaitForSecondsRealtime
.Der einzige Unterschied zwischen
WaitForSeconds
undWaitForSecondsRealtime
ist, dassWaitForSecondsRealtime
ist mit nicht skalierten Zeit zu warten, was bedeutet, dass beim anhalten ein Spiel mitTime.timeScale
, dieWaitForSecondsRealtime
Funktion nicht beeinträchtigt würden, sondernWaitForSeconds
würde.Warten und noch in der Lage sein zu sehen, wie lange Sie gewartet haben:
3.Mit einer coroutine und das Inkrementieren einer variable zu jedem Rahmen mit
Zeit.deltaTime
.Ein gutes Beispiel dafür ist, wenn Sie müssen die timer-Anzeige auf dem Bildschirm, wie viel Zeit man hat gewartet. Im Grunde wie ein timer.
Ist es auch gut, wenn Sie wollen, zu unterbrechen, das warten/schlafen mit einem
boolean
variable, wenn es wahr ist. Dies ist, woyield break;
verwendet werden kann.Kann man noch vereinfachen dies, indem die
while
Schleife in eine andere coroutine Funktion und nachgiebig und auch noch in der Lage sein, es zu sehen, zu zählen und sogar zu unterbrechen, den Zähler.Warten/Schlafen bis in die variable ändert oder gleich einem anderen Wert:
4.Mit einer coroutine und die
WaitUntil
Funktion:Warten, bis eine Bedingung
true
. Ein Beispiel ist eine Funktion, die wartet, für Spieler zu sein100
lädt dann die nächste Stufe.5.Mit einer coroutine und die
WaitWhile
Funktion.Warten Sie, während eine Bedingung ist
true
. Ein Beispiel ist, wenn Sie wollen, exit app, wenn die escape-Taste gedrückt wird.6.Mit der
Aufzurufen
Funktion:Können Sie anrufen sagen, die Einheit aufrufen, Funktion in der Zukunft. Beim Aufruf der
Invoke
Funktion, die Sie übergeben können, die Zeit zu warten, bevor Sie die Funktion aufrufen, um seinen zweiten parameter. Das Beispiel unten werden diefeedDog()
Funktion nach5
Sekunden dieInvoke
genannt wird.7.Mit der
Update()
Funktion undZeit.deltaTime
.Es ist genau wie #3 außer, dass es nicht coroutine. Es verwendet die
Update
Funktion.Das problem mit diesem ist, dass es erfordert so viele Variablen, so dass es nicht jedes mal, sondern nur einmal, wenn der timer vorbei ist, nach dem warten.
Gibt es noch andere Möglichkeiten, um zu warten, in der Einheit, aber Sie sollten auf jeden Fall wissen, diejenigen, die oben erwähnt so, dass macht es einfacher zu machen, Spiele in der Einheit. Ihre Verwendung hängt von den Umständen ab.
Für Ihr spezielles Problem, das ist die Lösung:
Und aufrufen/starten der coroutine Funktion von Ihrem start-oder Update-Funktion, rufen Sie es mit
Nein. #7 verwendet die
Update
Funktion. Die meisten der rest von Ihnen verwenden koroutine, aber die Art, wie Sie warten Sie verschiedene. Sie wurden nicht Hinzugefügt, nur für den Spaß ist es. Sie sind notwendig, anderes Szenario, sonst erhalten Sie nicht das gewünschte Verhalten, oder Sie werden am Ende neu zu erfinden das Rad, während die integrierten Funktionen gemacht, von Unity gibt es zu behandeln einige Sachen.InformationsquelleAutor Programmer
Waren Sie richtig zu verwenden WaitForSeconds. Aber ich vermute, dass Sie versucht, es zu benutzen, ohne Coroutinen. Das ist, wie es funktionieren sollte:
Und ich kann das auf Arbeit 🙁
Sie haben, um die "WaitForSeconds" als die yeild ein iEnumerator für diese zu arbeiten. Lesen Sie auf der Einheit Coroutinen. Ich wie dieser Artikel. Es erklärt, wie zu tun, was Sie Fragen in Ihrer Frage: unitypatterns.com/introduction-to-coroutines
Sie haben
yield return new WaitForSeconds(3);
für Sie zu arbeiten.richtig, ein blöder Fehler meinerseits. Bearbeitet die Antwort, danke für dein Kommentar!
InformationsquelleAutor Max Yankov