InvokeRepeating, CancelInvoke
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 23 sur 71.
InvokeRepeating(nameof(Blink), 0.5f, 0.5f) appelle Blink une première fois après 0.5 secondes, puis à 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 que le script a programmés.
Cette lampe témoin clignote jusqu’à ce que la barre d’espace soit pressé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 la création d’objets 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 appel répétitif supplémentaire à chaque image.
Défi
FacileFaites entrer le geyser en éruption trois fois selon un calendrier.
- Dans
Start(), appelezInvokeRepeating(nameof(Erupt), 1f, 2f);. - Écrivez
void Erupt(): ajoutez 1 àeruptions, appelezball.AddForce(Vector3.up * power, ForceMode.Impulse);et consignez"Eruption " + eruptions. - À la fin de
Erupt(), lorsqueeruptions == 3, appelezCancelInvoke(nameof(Erupt));.
Appuyez sur « Jouer » : la balle est projetée vers le haut trois fois, à 2 secondes d’intervalle. Puis cliquez sur « Vérifier ».
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, propulser la balle vers le haut, enregistrer dans le journal ; arrêter après la troisième éruption
}
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 à rebours7Rotation
Angles d’EulerQuaternionsRegardez dans la direction où vous vous déplacezTourner en douceurRécapitulatif : tourelle10Projet : Évasion de l’arène
L’arèneLes chasseurs2Collisions
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 à ramasser3Déclencheurs
Colliders déclencheursOnTriggerEnterObjets à ramasserLes caisses gardent le resteZones mortellesEntrée et sortieRécapitulatif : clé et porteEntraînez-vous par vous-même : Playground Unity