InvokeRepeating ve CancelInvoke
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 23 / 71.
InvokeRepeating(nameof(Blink), 0.5f, 0.5f), ilk olarak 0.5 saniye sonra Blink işlevini çağırır, ardından çağrı iptal edilene kadar her 0.5 saniyede bir tekrar çağırır. İlk sayı, ilk çağrıdan önceki gecikmedir; ikincisi ise çağrılar arasındaki süredir. CancelInvoke(nameof(Blink)) bu çağrıyı durdurur; adı belirtilmeyen CancelInvoke() ise betiğin planladığı tüm Invoke çağrılarını durdurur.
Bu uyarı lambası Space tuşuna basılana kadar yanıp söner, ardından sürekli yanık kalır:
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;
}
}Oluşturma bölümündeki zamanlayıcı da bir float alanı ve Update() içinde bir kontrol kullanarak aynı işi yapabilirdi. InvokeRepeating kullanıldığında Unity zamanı takip eder ve çağrıları yapar. InvokeRepeating çağrısı Start() içine konur: Update() içine konursa her karede bir tekrarlanan çağrı daha planlanır.
Görev
KolayGayzerin belirli aralıklarla üç kez püskürmesini sağla.
Start()içindeInvokeRepeating(nameof(Erupt), 1f, 2f);çağır.void Erupt()yaz:eruptionsdeğerini 1 artır,ball.AddForce(Vector3.up * power, ForceMode.Impulse);çağır ve"Eruption " + eruptionsifadesini günlüğe kaydet.Erupt()işlevinin sonunda,eruptions == 3olduğundaCancelInvoke(nameof(Erupt));çağır.
“Oyna” düğmesine bas: top, aralarında 2 saniye olacak şekilde üç kez yukarı fırlatılır. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
public class Geyser : MonoBehaviour
{
public Rigidbody ball;
public float power = 6f;
int eruptions;
void Start()
{
// Play'den 1 saniye sonra, ardından her 2 saniyede bir püskür
}
// Erupt(): say, ball'u yukarı it, log'a kaydet; üçüncüden sonra dur
}
Fizik ve Oynanış bölümündeki tüm dersler
1Rigidbody
Yerçekimi ve KütleAddForce ile İtmeDürtüyle ZıplamaFizik için FixedUpdateHızKinematik CisimlerTekrar: Fırlatma Rampası4Coroutine'ler
ÇağırmaInvokeRepeating ve CancelInvokeİlk Coroutine'inizCoroutine'lerde DöngülerCoroutine'leri DurdurmaTekrar: Geri Sayım2Çarpışmalar
OnCollisionEnterNeye Çarptım?Çarpınca KırılYerde DurmakSekme ve SürtünmeCollider ŞekilleriTekrar: Kırılabilir DuvarKendi başına pratik yap: Unity playground