Pada beberapa artikel saya yang sebelumnya sudah sempat membahas mengenai prefab jika masih belm silahkan kunjungi artikel prefab disini. Saya pernah berfikir seperti ini, "bagaimana ya cara memanggil object yang tidak berapa pada scene yang sama ?", dan tentunya jawabanya adalah kita harus menyimpan objek kedalam prefab yang kemudian nantinya bisa kita gunakan lagi ketika kita membutuhkannya (settingan inspector yang sama). Namun bagaimana jika kita akan memanggil prefab tersebut namun dalam kondisi game ter-play ?, kita tidak mungkin kan melakukan drag n drop manual walaupun sekedar hanya untuk testing pada editor unity ?, disinilah kita akan mengenal fungsi "Instantiate". Supaya lebih jelas lagi saya akan memberika potongan script yang mungkin bisa membuat para sobat disini menjadi paham. Berikut potongan script tersebut :
public GameObject Prefab;
void OnMouseDown (){
Instantiate (Prefab, transform.position, Quaternion.identyty);
}
Penjelasan : potongan script di atas menjelaskan ketika saya melakukan klik pada mouse, maka kita akan memanggil GameObject Prefab pada scene. Untuk penjelasan mengenai klik mouse silahkan baca artikel "Pengertian Collider".
Beberapa pertanyaan sambungan yang pernah muncul adalah, "bagaimana jika kita ingin menghapus objek yang ter-instantiate setelah x detik ?", caranya adalah kita tinggal menginisialisasikan gameobject yang ter-instantiate tersebut sebagai GameObject terlebih dahulu, lalu memanggil fungsi Destroy() pada game object tersebut. Berikut merupakan potongan kode lengkapnya :
public GameObject Prefab;
void OnMouseDown (){
GameObject g = Instantiate (Prefab, transform.position, Quaternion.identyty) as GameObject;
Destroy (g, 2);
}
Penjelasan : Kita menginisialisasikan sebuah prefab tersebut menjadi sebuah GameObject dengan nama "g". Setelah itu kita panggil fungsi Destroy() dengan target gameobject g, lalu disampingnya kita lihat angka 2 yang menjelaskan "gameobject/prefab tersebut akan dihapus setelah 2 detik setelah gameobject/prefab tersebut dipanggil ke scene.
Fungsi Instantiate() dan Destroy() sebenarnya tidak dianjurkan untuk pemakaian yang berlebihan karena akan sangat berpengaruh pada optimasi game yang akan kita buat. Jadi sebaiknya fungsi tersebut digunakan seperlunya saja. Alternatif untuk kedua fungsi tersebut adalah fungsi SetActive (). Mungkin pembahasan tentang optimasi game akan saya buat di pertemuan selanjutnya, hhe.
Bagaimana ?, paling tidak sobat menjadi paham beberapa fungsi penting yang kita gunakan untuk membuat sebuah game kan ?. Sebenarnya ada banyak fungsi-fungsi lain yang sengaja tidak saya jelaskan disini, untuk lebih lengkapnya silahkan lihat sendiri di dokumentasi unity ya ^^. Selamat mencoba :*
No comments:
Post a Comment