Wie kann ich einen Unity C# Script in 5 Sekunden wiederholen?
Ich habe ein Unity Projekt erstellt und weiß nicht wie ich ein Script in 5 Sekunden wiederhole. Kann mir da jemand helfen?
2 Antworten
Hi!
Du hast zwei Möglichkeiten das zu machen.
Via UpdateEntweder Du lässt in Deiner Update-Methode mitzählen und sobald 5 Sekunden vergangen sind, machst Du etwas. Das sähe ungefähr so aus:
public MyScript : MonoBehavior {
private float _counter;
private void Update() {
_counter += Time.deltaTime;
// 5 Sekunden sind vergangen
if (_counter >= 5) {
_counter = 0; // Wieder von vorne anfangen
DeineMethodeDieAufgerufenWerdenSoll();
}
}
}
Via Coroutine
Alternativ kannst Du auch eine Coroutine nutzen, das sieht dann quasi so aus:
public MyScript : MonoBehavior {
private void Start() {
StartCoroutine(Repeater());
}
private IEnumerator Repeater() {
while (true) { // Achtung, läuft unendlich lange und wird nie beendet!
yield return new WaitForSeconds(5);
DeineMethodeDieAufgerufenWerdenSoll();
}
}
}
Bei WaitForSeconds musst du etwas aufpassen, da hier 5 Spielsekunden gemeint sein. Wenn Dein Spiel schneller oder langsamer läuft (Time.timeScale wurde angepasst), dann sind die "5 Sekunden" länger oder kürzer.
Wenn Du echte 5 Sekunden willst, musst Du WaitForSecondsRealtime nutzen.
Gleiches gilt auch für die Variante Update oben. Dort das Time.deltaTime brauchst Du Time.unscaledDeltaTime wenn es unabhängig der Spielgeschwindigkeit sein soll.
Hi!
Vielleicht hilft dir ja das weiter:
lg
Ich kenne mich nicht so gut damit aus. Gibt es dafür ne Anleitung? Oder Video?