Wie kann ich einen Unity C# Script in 5 Sekunden wiederholen?

2 Antworten

Hi!

Du hast zwei Möglichkeiten das zu machen.

Via Update

Entweder 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.

Woher ich das weiß:Berufserfahrung
Woher ich das weiß:Recherche