Hancurkan
Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 67 dari 85.
Destroy(obj) menghapus GameObject dari scene, termasuk objek turunannya. Argumen kedua menunda penghapusan: Destroy(obj, 2f) menghapusnya 2 detik kemudian, dan skrip yang memanggilnya langsung melanjutkan eksekusi. Meriam ini menembak saat tombol Spasi ditekan, dan setiap peluru yang dibuatnya akan hilang 2 detik kemudian:
public GameObject bulletPrefab;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
GameObject bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity);
Destroy(bullet, 2f);
}
}Berikan salinannya, bukan prefab-nya: Destroy(bulletPrefab) ditolak dengan pesan Destroying assets is not permitted to avoid data loss. Berikan GameObject jika yang kamu maksud adalah objeknya. Di dalam skrip, gameObject adalah objek tempat skrip terpasang, jadi Destroy(gameObject) menghapus objek itu, sedangkan Destroy(this) hanya menghapus skrip dan membiarkan objeknya tetap ada.
Penghapusan tidak pernah terjadi saat itu juga. Unity menghapus objek di akhir frame saat ini, setelah pemanggilan Update() dan LateUpdate() pada frame tersebut, jadi baris-baris setelah Destroy tetap dijalankan dan objeknya masih bisa ditemukan sampai frame berakhir.
Tantangan
SedangSingkirkan koin-koin lama, lalu gunakan Space untuk menghapus peluncur koin.
- Simpan koin baru,
GameObject coin = Instantiate(...);, lalu panggilDestroy(coin, 3f);. - Saat
Input.GetKeyDown(KeyCode.Space), panggilDestroy(gameObject);.Destroy(this)hanya akan menghapus skrip.
Tekan tombol “Main”: setiap koin menghilang setelah 3 detik, dan Space menghentikan kemunculan koin baru. Lalu tekan tombol “Periksa”.
Coba sendiri
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: hancurkan saluran koin
}
}
Semua pelajaran di Dasar-Dasar Scripting Unity
1Dasar-Dasar C# di Unity
Halo, UnityVariabelDesimal Memerlukan fTeks di ConsoleVariabel yang Menyimpan NilaiIf dan ElseBandingkan AngkaUlasan: Pengumpul Koin7Perulangan dan method
Ulangi dengan forPerulangan di dalam perulanganTulis methodMethod yang Mengembalikan NilaiarrayUlasan: Tangga10Menemukan Benda
Cari Berdasarkan NamaTagCari Berdasarkan TipeReferensi Lebih Baik daripada FindNull di UnityRangkuman: Koin Terdekat13Proyek: Hindari Balok
Karakter PelariBalok dari Langit2Buat Bergerak
Tempatkan KubusBergerak Setiap FrameBerputar Setiap DetikKemudikan dengan TombolRangkuman: Kemudikan Kubus5Vektor
Menjumlahkan VektorArahRuang Lokal dan DuniaKecepatan DiagonalJarak AntarobjekVector3 adalah StructRangkuman: Pilot Drone8GameObjects dan Komponen
Referensi di InspectorAmbil KomponenKomponen yang HilangTambahkan KomponenRequireComponentTampilkan dan SembunyikanRingkasan: Sakelar Lampu6Transformasi dan Hierarki
Objek Induk dan AnakKibarkan BenderaSkalaMelihat BendaBergerak Menuju TitikRekap: Bulan yang MengorbitLatihan sendiri: Playground Unity