Menu
CoddyTech

Hancurkan

Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 52 dari 67.

Destroy(obj) menghapus GameObject dari scene, termasuk child-nya. Argumen kedua menunda penghapusan: Destroy(obj, 2f) menghapusnya 2 detik dari sekarang, dan script yang memanggilnya langsung melanjutkan eksekusi. Meriam ini menembak saat kamu menekan Space, 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 object tersebut. Di dalam script, gameObject adalah object tempat script berada, jadi Destroy(gameObject) menghapus object tersebut, sedangkan Destroy(this) hanya menghapus script dan membiarkan object tetap ada.

Penghapusan tidak pernah terjadi saat itu juga. Unity menghapus object di akhir frame saat ini, setelah pemanggilan Update() dan LateUpdate() pada frame tersebut, jadi baris setelah Destroy tetap dijalankan dan object masih bisa ditemukan sampai frame berakhir.

challenge icon

Tantangan

Sedang

Chute menjatuhkan sebuah koin setiap detik; bagian itu sudah ditulis. Ubah agar:

  • setiap koin menghilang 3 detik setelah muncul, sehingga tidak pernah ada lebih dari 3 koin sekaligus;
  • Space menghancurkan chute itu sendiri, sehingga tidak ada lagi koin yang keluar. Koin yang sudah keluar tetap menghilang tepat waktu.

Tekan Play, amati selama beberapa detik, tekan Space, lalu Check.

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
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar Scripting Unity