Unity - Penghancuran GameObject

Penghancuran GameObjects sama pentingnya dengan instansiasi. Dalam bab ini, kita akan belajar bagaimana menghancurkan GameObjects.

Untungnya, menghancurkan GameObjects semudah membuatnya. Anda hanya perlu referensi ke objek yang akan dihancurkan, dan memanggilDestroy() metode dengan referensi ini sebagai parameter.

Sekarang, mari kita coba membuat 5 segi enam yang akan menghancurkan dirinya sendiri ketika tombol yang ditetapkan ditekan.

Mari kita buat skrip baru bernama HexagonDestroyerdan buka di Visual Studio. Kami akan mulai dengan membuat publikKeyCodevariabel. KeyCode digunakan untuk menentukan kunci pada keyboard standar, dan kelas Input dalam metodenya menggunakannya. Dengan menjadikan variabel ini publik, seperti yang kita lakukan dengan Rigidbody dan Prefabs sebelumnya, kita dapat membuatnya dapat diakses melalui editor. Ketika variabel dibuat publik, kita tidak perluhardcodenilai-nilai seperti "KeyCode.A" ke dalam kode. Kode dapat dibuat fleksibel dengan objek sebanyak yang kita inginkan.

public class HexagonDestroyer : MonoBehaviour {
   
   public KeyCode keyToDestroy;

   // Update is called once per frame
   void Update () {
      
      if (Input.GetKeyDown(keyToDestroy)) {
         Destroy (gameObject);
      }
   }
}

Amati bagaimana kami menggunakan variabel bernama "gameObject" (g kecil, kapital O) dalam metode. Ini barugameObject variabel (tipe GameObject) digunakan untuk merujuk ke gameObject tempat skrip ini dilampirkan. Jika Anda melampirkan skrip ini pada banyak objek, semuanya akan bereaksi dengan cara yang sama setiap kali variabel ini terlibat.

Namun, jangan bingung antara keduanya.

  • GameObject dengan huruf kapital G dan O adalah class yang mencakup semua GameObjects dan menyediakan metode standar seperti Instantiate, Destroy dan metode untuk mengambil komponen.

  • gameObject dengan small g dan huruf besar O adalah spesifiknya instance dari GameObject, digunakan untuk merujuk ke gameObject yang saat ini dilampirkan skrip ini.

Mari kita sekarang mengkompilasi kode kita, dan kembali ke Unity.

Sekarang, kita akan membuat sprite segi enam baru, dan melampirkan skrip kita padanya. Selanjutnya, klik kanan gameObject di hierarki dan pilihDuplicate. Sebuah sprite baru dibuat dalam hierarki; Anda harus menggunakanMovealat untuk memposisikannya kembali. Ulangi langkah-langkah untuk membuat segi enam serupa.

Klik pada setiap segi enam dan lihat komponen skripnya. Anda sekarang dapat mengatur tombol individual sehingga GameObject menghancurkan dirinya sendiri saat tombol itu ditekan. Sebagai contoh, mari kita membuat 5 segi enam, dan mengaturnya untuk dimusnahkan ketika tombol A, S, D, F dan G ditekan.

Anda dapat menyetel kunci yang sama pada beberapa segi enam, dan semuanya akan menghancurkan dirinya sendiri secara bersamaan saat tombol ditekan; ini adalah contoh penggunaan filegameObject referensi, yang bisa Anda gunakan untuk merujuk ke objek individual menggunakan skrip tanpa harus menyetelnya satu per satu.

Kunci yang sama dapat disetel pada banyak segi enam, dan semuanya akan menghancurkan dirinya sendiri secara bersamaan saat tombol ditekan; ini adalah contoh penggunaan filegameObject referensi, yang bisa Anda gunakan untuk merujuk ke objek individual menggunakan skrip tanpa harus menyetelnya satu per satu.

Penting untuk dipahami bahwa menghancurkan GameObject tidak berarti objek akan pecah atau meledak. Menghancurkan suatu objek hanya akan (dan segera) menghentikan keberadaannya sejauh menyangkut permainan (dan kodenya). Tautan ke objek ini dan referensinya sekarang rusak, dan mencoba mengakses atau menggunakan salah satunya biasanya akan menghasilkan kesalahan dan crash.