Wiederholt aufrufen, Aufruf abbrechen
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 22 von 63.
InvokeRepeating(nameof(Blink), 0.5f, 0.5f) ruft Blink zum ersten Mal nach 0.5 Sekunden auf und danach alle 0.5 Sekunden erneut, bis der Aufruf abgebrochen wird. Die erste Zahl ist die Verzögerung vor dem ersten Aufruf, die zweite die Zeit zwischen den Aufrufen. CancelInvoke(nameof(Blink)) stoppt ihn, und CancelInvoke() ohne Namen stoppt alle Invoke-Aufrufe, die das Skript eingeplant hat.
Diese Warnleuchte blinkt, bis die Leertaste gedrückt wird, und bleibt dann eingeschaltet:
Light lamp;
void Start()
{
lamp = GetComponent<Light>();
InvokeRepeating(nameof(Blink), 0.5f, 0.5f);
}
void Blink()
{
lamp.enabled = !lamp.enabled;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
CancelInvoke(nameof(Blink));
lamp.enabled = true;
}
}Der Timer aus dem Kapitel zum Spawnen würde dieselbe Aufgabe mit einem float-Feld und einer Prüfung in Update() erledigen. Bei InvokeRepeating verwaltet Unity die Zeit und führt die Aufrufe aus. Der Aufruf von InvokeRepeating gehört in Start(): In Update() würde bei jedem Frame ein weiterer wiederholter Aufruf eingeplant.
Aufgabe
EinfachDer Geysir schleudert den Ball, der auf ihm liegt, in die Luft. Sein Skript hat den ball, die power und einen eruptions-Zähler. Lass ihn nach einem Zeitplan ausbrechen:
- Der erste Ausbruch erfolgt 1 Sekunde nach Play, danach alle 2 Sekunden.
- Ein Ausbruch ist eine Methode namens
Erupt: Sie erhöhteruptionsum 1, stößt den Ball mitball.AddForce(Vector3.up * power, ForceMode.Impulse)nach oben und protokolliertEruption 1,Eruption 2und so weiter. - Nach dem dritten Ausbruch hört der Geysir endgültig auf.
Drücke Play und beobachte den Ball, dann Check.
Probier es selbst
using UnityEngine;
public class Geyser : MonoBehaviour
{
public Rigidbody ball;
public float power = 6f;
int eruptions;
void Start()
{
// 1 Sekunde nach Play ausbrechen, danach alle 2 Sekunden
}
// Erupt(): zählen, ball nach oben stoßen, protokollieren; nach dem dritten Mal stoppen
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Physik und Gameplay
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe4Coroutinen
AufrufenWiederholt aufrufen, Aufruf abbrechenDeine erste CoroutineSchleifen in CoroutinenCoroutinen beendenRückblick: Countdown2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand