Penggunaan Prefab dan Fungsi Instantiate pada Unity 3D
Mengenal dan Mempraktikkan Prefab Serta Fungsi Instantiate Untuk Membuat Game Object Secara Runtime Pada Unity 3D
![]() |
| Prefab & Fungsi Instantiate() |
Pada kesempatan kali ini saya akan menjabarkan dan membahas mengenai Prefab dan Fungsi Instantiate di Unity, yang diajarkan dosen saya Pak Dolly Virgian Shaka Yudha Sakti pada Mata Kuliah Pemrograman Permainan di Universitas Budi Luhur.
Saya menggunakan Editor Unity Versi 2018.4.20f1.
Baik, kita mulai saja pembahasan dengan mengetahui apa itu fungsi Prefab dan Instantiate().
Fungsi Instantiate() atau yang dalam banyak forum lebih sering disebut dengan: "Fungsi untuk membuat GameObject secara runtime."
Ide game yang akan dibuat kali ini cukup sederhana yaitu membuat Prefab dari sebuah GameObject dan mendaftarkannya sebagai sebuah variable public agar dapat dibuat ulang berkali-kali oleh fungsi pemanggil. Fungsi ini merupakan salah satu fungsi yang sering digunakan dalam pembuatan game.
Langkah Pembuatan
- Membuat Prefab
Buatlah project baru di Unity atau cukup Scene baru saja (jika masih ingin menggunakan project materi sebelumnya).
Pastikan Project yang digunakan adalah Game 3D. Tambahkan sebuah Plane dengan cara klik menu GameObject -> 3D Object -> Plane lalu ganti namanya menjadi Lantai1.
Seperti gambar dibawah ini:
Selanjutnya atur posisi Main Camera dan Plane menggunakan gizmo atau panel Transform sehingga Kamera dapat melihat lantai dengan jelas berada di bawah.

Berikutnya tambahkan plane kedua, ganti namanya menjadi Lantai2 dan atur scalenya menggunakan tombol Scale di pojok kiri atas atau masukkan angkanya pada panel Transform.Angkat posisi Lantai2 sedikit ke atas dan atur kemiringannya sehingga mirip seperti gambar berikut.
Klik Lantai2 pada tab Hierarchy kemudian buat GameObjectChild dengan cara klik menu GameObject -> Create Empty Child.Atur posisi GameObjectChild tadi menggunakan gizmo atau panel Transform sehingga sedikit di atas Lantai2 seperti gambar berikut.

Untuk memudahkan penyebutan, ganti nama Game Object Child tadi menjadi TitikJatuh.Selanjutnya buat sebuah Sphere baru dengan cara klik menu GameObjects -> 3D Object -> Sphere dan ganti namanya menjadi MyBall.Tambahkan sebuah gambar pada panel Assets dengan cara klik kanan pada panel Assets -> Import New Assets..., lalu pilih salah satu gambar yang ada di komputer Anda.
Dari panel Assets, drag gambar tersebut menggunakan mouse lalu letakkan pada MyBall sehingga terlihat seperti di bawah ini.
Klik MyBall dan tambahkan RigidBody dengan cara klik menu Component -> Physics -> Rigidbody. Atau bisa juga klik Add Component lalu ketik yang ingin dicari yaitu Rigidbody, seperi gambar dibawah ini:
Rigidbody adalah sebuah komponen penting yang dapat membuat GameObject seolah-olah memiliki berat dan dapat dipengaruhi oleh gaya gravitasi.Buat sebuah Physic Material dengan cara klik Assets -> Create -> Physics Material dan beri nama Bounce.
Ganti parameter Bounciness menjadi 0.9 untuk menambahkan efek memantul.

Kita kembali ke GameObject MyBall, tambahkan Material Bounce dengan cara drag dari panel Assets ke panel Sphere Collider, parameter material. Atau klik tombol kecil di kolom Material pada komponen Sphere Collider milik MyBall.

Berikutnya untuk menjadikan Prefab, drag MyBall dari tab Hierarchy ke panel Assets.

Jika Prefab MyBall sudah dibuat, Anda dapat menghapus GameObject MyBall dari tab Hierarchy, karena yang akan kita gunakan adalah Prefab yang sekarang sudah ada di Assets.Prefab adalah sebuah instansiasi dari sebuah GameObject sehingga GameObject yang sudah pernah dibuat bisa digunakan kembali dengan cepat. Selain itu Prefab memungkinkan GameObject digandakan menggunakan script.
- Membuat ScriptBuat script C# dan beri nama GandakanBola.cs lalu ubah script menjadi seperti berikut ini:
Selanjutnya pasang script tersebut di GameObject mana saja yang Anda suka, lalu pastikan parameter TempatJatuh dan parameter Bola diisi.Parameter Tempat Jatuh diisi dengan GameObject TitikJatuh, sedangkan parameter Bola diisi dengan Prefab MyBall.
Jalankan Games dan klik tombol Buat Bola berkali-kali.
Perhatikan pula kondisi tab Hierarchy dengan seksama, semua GameObject yang terbentuk dan terterah di sana akan menghilang secara otomatis setelah 5 detik. Beginilah cara Unity membuat GameObject secara runtime sekaligus menjaga kestabilan penggunaan memori pada Komputer. - Modifikasi Script
Saya akan memodifikasi dan menambahkan perintah dari script yang sudah ada, yaitu membuat agar event munculnya bola tidak hanya melalui tombol yang ada di GUI, tetapi juga bisa menggunakan salah satu tombol yang ada di keyboard, misalnya saja tombol spasi. Jadi ketika ditekan tombol spasi, muncul bola dari prefab.
Buat Script seperti dibawah ini:
Lalu Play Game dan sekarang jika menekan tombol spasi fungsinya akan sama seperti tombol Buat Bola yang ada pada tampilan GUI Unity dari script sebelumnya. Mengklik tombol spasi dan tombol Buat Bola pada GUI bisa digunakan bersamaan, dan dapat memproduksi bola secara bersamaan pula. - Pembahasan code pada script
Variable TempatJatuh pada baris ke 7 akan berisi koordinat GameObject ‘muncul’. Jadi yang kita perlukan dari TitikJatuh hanyalah posisinya saja, bukan objeknya.
Variable Bola pada baris ke 7 digunakan untuk GameObject yang akan diduplikasi.
Baris 12 s.d 15: Kunci dari materi ini, yaitu perintah untuk menduplikasi objek Bola di posisi TitikJatuh (position+rotation)Baris ke 16: perintah untuk menghancurkan GameObject 5 detik setelah diciptakan.
Baris ke 16 merupakan salah satu bagian terpenting, jika perintah ini tidak dibuat, maka game akan memakan banyak memori karena terus memproduksi GameObject.
Sekian pembahasan kali ini mengenai Prefab dan Fungsi Instantiate, semoga cukup jelas dan bermanfaat. Kunjungi juga website resmi kampus saya disini.
Terimakasih.










Comments
Post a Comment