InvokeRepeating, CancelInvoke
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 22 sur 63.
InvokeRepeating(nameof(Blink), 0.5f, 0.5f) appelle Blink pour la première fois après 0.5 seconde, puis de nouveau toutes les 0.5 secondes, jusqu’à son annulation. Le premier nombre correspond au délai avant le premier appel, le second au temps entre les appels. CancelInvoke(nameof(Blink)) l’arrête, et CancelInvoke() sans nom arrête tous les Invoke programmés par le script.
Cette lampe témoin clignote jusqu’à ce que la touche Espace soit enfoncée, puis reste allumée :
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;
}
}Le minuteur du chapitre sur l’apparition ferait le même travail avec un champ float et une vérification dans Update(). Avec InvokeRepeating, Unity gère le temps et effectue les appels. L’appel à InvokeRepeating se place dans Start() : dans Update(), il programmerait un nouvel appel répétitif à chaque image.
Défi
FacileLe Geyser projette en l’air la balle posée dessus. Son script comporte ball, power et un compteur eruptions. Fais-le entrer en éruption selon un calendrier :
- La première éruption a lieu 1 seconde après avoir appuyé sur Play, puis une éruption toutes les 2 secondes.
- Une éruption est une méthode nommée
Erupt: elle ajoute 1 àeruptions, pousse la balle vers le haut avecball.AddForce(Vector3.up * power, ForceMode.Impulse)et journaliseEruption 1,Eruption 2, et ainsi de suite. - Après la troisième éruption, le geyser s’arrête définitivement.
Appuie sur Play et observe la balle, puis clique sur Check.
Essayez vous-même
using UnityEngine;
public class Geyser : MonoBehaviour
{
public Rigidbody ball;
public float power = 6f;
int eruptions;
void Start()
{
// Déclencher une éruption 1 seconde après Play, puis toutes les 2 secondes
}
// Erupt() : compter les éruptions, propulser ball vers le haut, enregistrer un message ; arrêter après la troisième
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Physique et gameplay
1Corps rigide
Gravité et massePousser avec AddForceSauter avec une impulsionFixedUpdate pour la physiqueVitesseCorps cinématiquesRécapitulatif : plateforme de lancement4Coroutines
InvoquerInvokeRepeating, CancelInvokeVotre première coroutineBoucles dans les coroutinesArrêter les coroutinesRécapitulatif : compte à rebours2Collisions
OnCollisionEnterQu’est-ce que j’ai touché ?Se briser à l’impactRester au solRebond et frictionFormes des collidersRécapitulatif : mur destructible5Projet : Course aux pièces
La balle roulanteDes pièces à ramasser