Memahami Prefabs dan Instansiasi

Membuat instance dan menghancurkan objek dianggap sangat penting selama bermain game. Instansiasi berarti mewujudkan. Item muncul atau "muncul" dalam game, musuh mati, elemen GUI menghilang, dan adegan dimuat sepanjang waktu dalam game. Mengetahui cara membuang benda yang tidak dibutuhkan dengan benar dan cara membawanya masuk menjadi lebih penting.

Mari kita pahami dulu apa prefabsadalah. Prefab dianggap penting untuk memahami cara kerja Instansiasi di Unity.

Prefabs seperti blueprintsdari GameObject. Rumah pabrikan, di satu sisi, adalah acopydari GameObject yang dapat diduplikasi dan dimasukkan ke dalam sebuah adegan, bahkan jika itu tidak ada saat adegan itu dibuat; dengan kata lain, prefab bisa digunakandynamically generate GameObjects.

Untuk membuat prefab, Anda hanya perlu menyeret GameObject yang diinginkan dari hierarki adegan Anda ke dalam proyek Assets.

Sekarang, untuk membuat instance GameObject, kami memanggil Instantiate()metode dalam skrip kami. Metode ini, didefinisikan diMonoBehaviour, mengambil GameObject sebagai parameter, sehingga ia tahu GameObject mana yang akan dibuat / diduplikasi. Ini juga memiliki berbagai penggantian untuk mengubah transformasi objek yang baru dipakai, serta parenting.

Mari kita coba contoh baru hexagon kapan pun Space tombol ditekan.

Buat skrip baru bernama Instantiatordan buka itu. DalamUpdate metode, ketik kode yang diberikan di bawah ini.

Di sini, kami menggunakan GetKeyDown metode dari Inputkelas untuk memeriksa apakah pemain menekan tombol tertentu selama frame terakhir. Karena kami ingin terus memeriksa, kami memasukkannyaUpdate, yang berjalan 60 kali per detik. Metode GetKeyDown kembalitrue jika kunci ditentukan oleh KeyCode enum (yang mencantumkan semua tombol yang memungkinkan pada keyboard standar) ditekan dalam bingkai itu.

public class Instantiator : MonoBehaviour {
   public GameObject Hexagon;
   // Update is called once per frame
   void Update () {
      if (Input.GetKeyDown(KeyCode.Space)) {
         Instantiate(Hexagon);
      }
   }
}

Deklarasi GameObject publik di bagian atas membuat slot yang mirip dengan yang kami buat untuk Rigidbody2D di pelajaran sebelumnya. Slot ini hanya menerimaprefabs (dalam waktu editor) dan gameObjects (dalam runtime), bagaimanapun.

Simpan skrip, dan biarkan terkompilasi. Setelah selesai, buat yang baru,empty GameObject dengan masuk ke menu klik kanan hierarki objek Anda, dan pilih Create Empty.

Beri nama Objek ini dengan sesuatu yang dapat dikenali seperti Instatiator Objectdan lampirkan skrip yang baru kami buat ke sana. Di slot yang muncul untuk GameObject, seret prefab yang kita buat.

Jika kita menjalankan game sekarang, menekan Spasi akan membuat objek Hexagon baru yang identik dengan yang kita gunakan untuk membuat prefab. Anda dapat melihat setiap segi enam dibuat dalam hierarki objek. Alasan Anda tidak dapat melihat mereka muncul di dalam game adalah karena untuk saat ini, mereka semua sedang dibuatexactly satu dari yang lain.

Dalam pelajaran kita selanjutnya, kita akan memahami konsep penghancuran objek.