InvokeRepeating ve CancelInvoke
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 22 / 63.
InvokeRepeating(nameof(Blink), 0.5f, 0.5f), ilk kez 0.5 saniye sonra Blink işlevini çağırır, ardından iptal edilene kadar her 0.5 saniyede bir yeniden çağırır. İlk sayı ilk çağrıdan önceki gecikme süresini, ikinci sayı ise çağrılar arasındaki süreyi belirtir. CancelInvoke(nameof(Blink)) bunu durdurur; isim belirtilmeden kullanılan CancelInvoke() ise betiğin zamanladığı tüm Invoke çağrılarını durdurur.
Bu uyarı lambası Space tuşuna basılana kadar yanıp söner, ardından 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;
}
}Nesne oluşturma bölümündeki zamanlayıcı, bir float alanı ve Update() içinde bir denetim 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 yazılır: Update() içine yazılsaydı her karede bir tekrarlama çağrısı daha zamanlardı.
Görev
KolayGeyser, üzerindeki topu havaya fırlatır. Betiğinde ball, power ve bir eruptions sayacı bulunur. Düzenli aralıklarla püskürmesini sağla:
- İlk püskürme, Play'e bastıktan 1 saniye sonra gerçekleşir; ardından her 2 saniyede bir püskürür.
- Püskürme, adı
Eruptolan bir yöntemdir:eruptionsdeğerini 1 artırır,ball.AddForce(Vector3.up * power, ForceMode.Impulse)ile topu yukarı iter veEruption 1,Eruption 2ve benzerlerini günlüğe kaydeder. - Üçüncü püskürmeden sonra gayzer bir daha püskürmez.
Play'e basıp topu izle, ardından Check'e 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, günlüğe kaydet; üçüncüden sonra dur
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
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 Duvar