InvokeRepeating i CancelInvoke
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 23 z 71.
InvokeRepeating(nameof(Blink), 0.5f, 0.5f) wywołuje Blink po raz pierwszy po 0.5 sekundy, a następnie co 0.5 sekundy, aż do anulowania. Pierwsza liczba to opóźnienie przed pierwszym wywołaniem, druga — czas między wywołaniami. CancelInvoke(nameof(Blink)) zatrzymuje je, a CancelInvoke() bez nazwy zatrzymuje każde wywołanie Invoke zaplanowane przez skrypt.
Ta lampka ostrzegawcza miga, dopóki nie naciśniesz spacji, a potem pozostaje włączona:
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;
}
}Timer z rozdziału o pojawianiu się obiektów wykonałby to samo zadanie za pomocą pola float i sprawdzenia w Update(). W przypadku InvokeRepeating Unity sam pilnuje czasu i wykonuje wywołania. Wywołanie InvokeRepeating należy umieścić w Start(): w Update() zaplanowałoby kolejne powtarzające się wywołanie w każdej klatce.
Wyzwanie
ŁatwySpraw, aby gejzer wybuchał trzy razy według harmonogramu.
- W
Start()wywołajInvokeRepeating(nameof(Erupt), 1f, 2f);. - Napisz
void Erupt(): dodaj 1 doeruptions, wywołajball.AddForce(Vector3.up * power, ForceMode.Impulse);i zaloguj"Eruption " + eruptions. - Na końcu
Erupt(), gdyeruptions == 3, wywołajCancelInvoke(nameof(Erupt));.
Naciśnij „Graj”: piłka zostanie wyrzucona w górę trzy razy, w odstępach 2 sekund. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class Geyser : MonoBehaviour
{
public Rigidbody ball;
public float power = 6f;
int eruptions;
void Start()
{
// Wywołaj Erupt 1 sekundę po Play, a potem co 2 sekundy
}
// Erupt(): zlicz wybuchy, wypchnij piłkę w górę, zapisz informację w logu; zakończ po trzecim wybuchu
}
Wszystkie lekcje w sekcji Fizyka i rozgrywka
1Ciało sztywne
Grawitacja i masaPopychanie za pomocą AddForceSkok z impulsemFixedUpdate dla fizykiPrędkośćCiała kinematycznePowtórka: platforma startowa4Korutyny
WywoływanieInvokeRepeating i CancelInvokeTwoja pierwsza korutynaPętle w korutynachZatrzymywanie korutynPodsumowanie: odliczanie10Projekt: Ucieczka z areny
ArenaŁowcy2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur5Projekt: Wyścig po monety
Tocząca się piłkaZbieranie monet3Wyzwalacze
Kolizje wyzwalająceOnTriggerEnterPrzedmioty do zebraniaSkrzynie zatrzymują resztęStrefy śmierciWejście i wyjściePodsumowanie: klucz i drzwiPoćwicz samodzielnie: Edytor online Unity