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.
Aufgabe
MittelLass alle interval Sekunden eine Box fallen (2 im Inspector).
- Füge die Felder
float timer;undint count;hinzu. Addiere inUpdate()Time.deltaTimezutimer. - Wenn
timer >= intervalgilt, rufeInstantiate(boxPrefab, transform.position, Quaternion.identity);auf und zieheintervalvontimerab. - Erhöhe dann
countum 1 und gib"Box " + countim 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
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground