Yok Etme
Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 67 / 85.
Destroy(obj), alt nesneler de dâhil olmak üzere bir GameObject'i sahneden kaldırır. İkinci bir argüman, işlemi geciktirir: Destroy(obj, 2f), nesneyi şu andan 2 saniye sonra kaldırır ve bu çağrıyı yapan 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ı gönderin: Destroy(bulletPrefab) çağrısı, Destroying assets is not permitted to avoid data loss. hatasıyla reddedilir. Nesneyi kastettiğinizde bir GameObject gönderin. Bir betiğin içinde gameObject, betiğin bağlı olduğu nesnedir. Bu nedenle Destroy(gameObject) o nesneyi kaldırırken Destroy(this) yalnızca betiği kaldırır ve nesneyi yerinde bırakır.
Destroy işlemi hiçbir zaman anında gerçekleşmez. Unity, nesneyi geçerli karenin sonunda, o karenin Update() ve LateUpdate() çağrılarından sonra kaldırır. Bu nedenle Destroy satırından sonraki satırlar çalışmaya devam eder ve kare sona erene kadar nesne hâlâ bulunabilir.
Görev
OrtaEski madeni paraları temizle ve Space tuşunun oluğu kaldırmasını sağla.
- Yeni madeni parayı,
GameObject coin = Instantiate(...);, koru ve ardındanDestroy(coin, 3f);çağır. Input.GetKeyDown(KeyCode.Space)durumundaDestroy(gameObject);çağır.Destroy(this)yalnızca betiği kaldırır.
“Oyna” düğmesine bas: her madeni para 3 saniye sonra kaybolur ve Space yeni madeni paraların oluşmasını durdurur. Ardından “Kontrol et” düğmesine 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
}
}
Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler
1Unity'de C# Temelleri
Merhaba, UnityDeğişkenlerOndalık Sayılar için f GerekirKonsolda MetinHatırlayan DeğişkenlerEğer ve DeğilseSayıları KarşılaştırmaTekrar: Coin Collector4Girdi
Basılı, Basılı Tutulmuş, BırakılmışEksenlerAdlandırılmış DüğmelerFare DüğmeleriTekrar: Zıplama Yükleme7Döngüler ve Metotlar
for ile tekrarlamaİç içe döngülerBir metot yazmaYanıt veren metotlarDizilerTekrar: Merdiven10Nesneleri Bulma
Ada Göre BulEtiketlerTüre Göre BulReferanslar Bulmaktan İyidirUnity'de NullÖzet: En Yakın Madeni Para13Proje: Bloklardan Kaç
KoşucuGökyüzünden Bloklar5Vektörler
Vektörleri ToplamaYönlerYerel ve Dünya UzayıÇapraz HızNesneler Arasındaki MesafeVector3 Bir Struct'tırTekrar: Drone Pilotu8GameObject'ler ve Bileşenler
Inspector'daki ReferanslarBir Bileşen AlEksik BileşenlerBileşen EkleRequireComponentGöster ve GizleÖzet: Işık Anahtarı3Inspector
Inspector AlanlarıSerializeFieldOndalıklı Sayılar ve MathfInspector ÖzellikleriTekrar: Asansör6Dönüşümler ve Hiyerarşi
Ebeveynler ve ÇocuklarBayrağı Göndere ÇekÖlçekNesnelere BakBir Noktaya Doğru Hareket EtTekrar: Yörüngedeki Ay9Proje: Yıldızı Yakala
YakalayıcıDüşen Bir YıldızKendi başına pratik yap: Unity playground