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
![](https://images.gutefrage.net/media/user/BoundfoxStudios/1594808801014_nmmslarge__0_0_512_512_d0d8c4156c0806032a429d80fed1cb83.png?v=1594808801000)
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.
![](https://images.gutefrage.net/media/user/Halbnick/1598697117410_nmmslarge__0_7_639_639_658a1db6a151f0a49fe23253b2792fae.png?v=1598697118000)
Hi!
Vielleicht hilft dir ja das weiter:
lg
Ich kenne mich nicht so gut damit aus. Gibt es dafür ne Anleitung? Oder Video?