Menu
CoddyTech

Nach Zeitintervall erzeugen

Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 63 von 85.

Ein Spawner, der alle paar Sekunden etwas erzeugt, benötigt einen Timer. Time.deltaTime ist die Zeit, die der letzte Frame gedauert hat. Wenn du sie bei jedem Update() in einem Feld addierst, erhältst du die Anzahl der vergangenen Sekunden. Sobald der Gesamtwert das Intervall erreicht, erzeugst du ein Objekt und ziehst das Intervall vom Gesamtwert ab.

Dieser Springbrunnen wirft jede halbe Sekunde einen Wassertropfen:

public GameObject dropPrefab;
public float interval = 0.5f;
float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        Instantiate(dropPrefab, transform.position, Quaternion.identity);
        timer -= interval;
    }
}

timer -= interval bewahrt den Rest: Wenn der Frame bei 0.51 Sekunden endet, beginnt die nächste halbe Sekunde bei 0.01 zu zählen, und die Tropfen bleiben im Takt. timer = 0 würde diesen Rest verwerfen, sodass jeder Tropfen etwas verspätet käme und die Verzögerung sich über ein langes Spiel hinweg aufsummieren würde. timer ist privat, weil niemand es im Inspector festlegen muss.

challenge icon

Aufgabe

Mittel

Lass alle interval Sekunden eine Box fallen (2 im Inspector).

  1. Füge die Felder float timer; und int count; hinzu. Addiere in Update() Time.deltaTime zu timer.
  2. Wenn timer >= interval gilt, rufe Instantiate(boxPrefab, transform.position, Quaternion.identity); auf und ziehe interval von timer ab.
  3. Erhöhe dann count um 1 und gib "Box " + count im Log aus.

Drücke „Spielen“: Alle 2 Sekunden fällt eine Box, und die Console zählt Box 1, Box 2. Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;

public class BoxDropper : MonoBehaviour
{
    public GameObject boxPrefab;
    public float interval = 1f;

    void Update()
    {
        // Alle interval Sekunden: eine Kiste fallen lassen und "Box 1", "Box 2"... protokollieren
    }
}

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground