InvokeRepeating i CancelInvoke
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 22 z 63.
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, a druga to czas między wywołaniami. CancelInvoke(nameof(Blink)) zatrzymuje to wywoływanie, a CancelInvoke() bez nazwy zatrzymuje każde wywołanie Invoke zaplanowane przez skrypt.
Ta lampka ostrzegawcza miga, aż zostanie naciśnięty klawisz Space, 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;
}
}Licznik czasu z rozdziału o tworzeniu obiektów wykonałby to samo zadanie za pomocą pola typu float i sprawdzenia w Update(). W przypadku InvokeRepeating Unity śledzi czas i wykonuje wywołania. Wywołanie InvokeRepeating umieszcza się w Start(): w Update() planowałoby ono kolejne powtarzające się wywołanie w każdej klatce.
Wyzwanie
ŁatwyGeyser wyrzuca w powietrze piłkę znajdującą się na nim. Jego skrypt zawiera ball, power i licznik eruptions. Spraw, by wybuchał według harmonogramu:
- Pierwszy wybuch następuje 1 sekundę po naciśnięciu Graj, a następnie kolejny co 2 sekundy.
- Wybuch jest metodą o nazwie
Erupt: zwiększaeruptionso 1, wypycha piłkę w górę za pomocąball.AddForce(Vector3.up * power, ForceMode.Impulse)i zapisuje w loguEruption 1,Eruption 2i tak dalej. - Po trzecim wybuchu gejzer zatrzymuje się na dobre.
Naciśnij Graj i obserwuj piłkę, a 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 erupcję 1 sekundę po Play, a następnie co 2 sekundy
}
// Erupt(): zlicz erupcje, wypchnij piłkę w górę, zapisz informację w dzienniku; zatrzymaj po trzeciej erupcji
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
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: odliczanie2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur