Yok Etme
Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 52 / 67.
Destroy(obj), alt nesneler de dâhil olmak üzere bir GameObject'i sahneden kaldırır. İkinci bir argüman gecikme sağlar: Destroy(obj, 2f) nesneyi şu andan 2 saniye sonra kaldırır ve bunu çağıran betik hemen çalışmaya devam eder. Bu top Space tuşuna basıldığında ateş eder ve oluşturduğu her mermi 2 saniye sonra yok olur:
public GameObject bulletPrefab;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
GameObject bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity);
Destroy(bullet, 2f);
}
}Prefab'i değil, kopyayı iletin: Destroy(bulletPrefab) çağrısı Destroying assets is not permitted to avoid data loss. hatasıyla reddedilir. Nesneyi kastettiğinizde bir GameObject iletin. Bir betiğin içindeki gameObject, betiğin bağlı olduğu nesnedir; dolayısıyla Destroy(gameObject) bu nesneyi kaldırırken Destroy(this) yalnızca betiği kaldırır ve nesneyi olduğu gibi bırakır.
Yok etme işlemi asla anında gerçekleşmez. Unity nesneyi, geçerli karedeki Update() ve LateUpdate() çağrılarından sonra, karenin sonunda kaldırır; bu nedenle Destroy sonrasındaki satırlar yine çalışır ve kare sona erene kadar nesne hâlâ bulunabilir.
Görev
OrtaChute her saniyede bir madeni para bırakıyor; bu kısım yazılmış durumda. Şöyle değiştir:
- her madeni para göründükten 3 saniye sonra kaybolsun, böylece aynı anda asla 3'ten fazla madeni para olmasın;
- Space oluğun kendisini yok etsin, böylece artık başka madeni para gelmesin. Dışarı çıkmış olan madeni paralar yine zamanında kaybolsun.
Play'e bas, birkaç saniye izle, Space'e bas, ardından Check'e bas.
Kendin dene
using UnityEngine;
public class CoinChute : MonoBehaviour
{
public GameObject coinPrefab;
public float interval = 1f;
float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
Instantiate(coinPrefab, transform.position, Quaternion.identity);
timer -= interval;
}
// Space: oluğu yok et
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler
1İlk Betiğiniz
Merhaba, UnityKüpü YerleştirHer Karede Hareket EtHer Saniye DönTuşlarla Yön VerÖzet: Küpü Sür4Vektörler
Vektörleri ToplamaYönlerYerel ve Dünya UzayıÇapraz HızNesneler Arasındaki MesafeVector3 Bir YapıdırÖzet: Drone Pilotu7Proje: Yıldızı Yakala
YakalayıcıDüşen Bir Yıldız5Dönüşümler ve Hiyerarşi
Ebeveynler ve ÇocuklarÖlçekNesnelere BakışBir Noktaya Doğru HareketTekrar: Yörüngedeki Ay6GameObject'ler ve Bileşenler
Inspector'daki ReferanslarBir Bileşen AlEksik BileşenlerBir Bileşen EkleRequireComponentGöster ve GizleÖzet: Işık Anahtarı9Prefab'ler ve Nesne Oluşturma
Prefab'ler ve InstantiateZamanlayıcıyla Nesne OluşturmaIzgarada Nesne OluşturmaNesne ListeleriYok EtmeRastgele Nesne OluşturmaÖzet: Havai Fişekler