Mengenal Konsep Event dan Delegate untuk Berkomunikasi Antar Object di Unity

Pembelajaran lengkap dari pembuatan game menggunakan Unity dapat anda pelajari lebih mendalam di Dicoding Academy Belajar Membangun Game 2D dan 3D dengan Unity :  https://www.dicoding.com/academies/39

Pada tutorial kali ini, kita akan mengenal salah satu konsep untuk berkomunikasi antar objek dengan menggunakan Delegates dan Event. Cara yang paling umum untuk digunakan jika ingin berkomunikasi dengan objek lain adalah dengan memberikan reference terhadap sebuah object. Kita bisa melakukan ini dengan cara membuat public variable untuk suatu game object lalu memberikan reference melalui inspector. Kita juga bisa melakukan komunikasi dengan cara menggunakan fungsi find game object. Atau yang paling mudah, kita bisa menggunakan fungsi sendMessage yang memiliki limitasi hanya bisa memanggil fungsi di script lain yang berada dalam satu komponen game object.

Pendekatan delegates dan event merupakan salah satu pendekatan yang cukup populer dalam bahasa pemrograman C# dan bisa membuat kode kita bisa lebih bersih. Jika komunikasi yang kita lakukan sudah semakin banyak percabangan dan referencenya, pendekatan delegates dan event akan membantu kita untuk bisa mendesain arsitektur kode kita lebih baik lagi. Mari kita akan coba bahas teori dari delegate dan event secara general terlebih dahulu.


Delegate

Secara konsep, delegate merupakan pointer reference dari suatu method. Delegate dapat membuat kita menjadikan sebuah method menjadi variabel dan melempar sebuah method sebagai sebuah variable ketika melakukan callback. Ketika method ini dipanggil, maka sistem akan menotifikasi seluruh metode yang merefer ke delegate. Analoginya mirip dengan subscription. Semua method yang melakukan subscription akan diupdate secara otomatis. Delegate sangat bermanfaat untuk invoke method dalam jumlah banyak dalam satu event runtime dan digunakan untuk trigger callback method.

Mungkin secara konsep terasa sangat membingungkan, namun jangan khawatir, seiring nanti kita belajar mempraktekan delegate dan event, akan semakin terbayang betapa simpel dan efisiennya penggunakan metode ini untuk komunikasi antar objek.

shoot

Sebagai contoh, kita bisa ambil kasus sebuah kode dimana jika kita menekan tombol, akan memberikan efek di dua gameobject yang berbeda. Semisal jika kita menekan button shoot, maka akan ada dua gameobject yang menjalankan methodnya. Yang pertama akan ada object pistol yang menginisiasi peluru dan yang kedua akan ada object UI yang mengurangi jumlah peluru yang player miliki. Contoh sintaksnya adalah sebagai berikut:


Event

Event merupakan tipe spesial dari delegates yang dapat digunakan untuk menotifikasi kelas lainnya ketika sesuatu terjadi. Contohnya ketika button shoot dipencet, event akan memberikan notifikasi kepada kelas peluru dan kelas jumlah peluru untuk melakukan aksinya masing-masing. Event bisa di deklarasi menggunakan delegates. Ini adalah contoh sintaksnya.


Contoh Penggunaannya

Pertama kita akan memberikan deklarasi delegate dan event pada kelas yang memproses tombol shoot yang diklik, kita beri nama kelas ButtonShoot.cs.

Selanjutnya kita akan membuat kode dari kelas yang subscribe tersebut sehingga ketika terjadi perubahaan, method pada kelas ini akan dijalankan. Kita akan membuat dua kelas yang subscribe terhadap event Click yakni kelas Pistol.cs dan kelas TextPeluru.cs.

Dengan memasang kode di atas, maka ketika tombol button shoot ditekan, secara otomatis kelas Pistol.cs akan menjalankan method BulletShoot() dan kelas Peluru.cs akan menjalankan method ReduceBullet().

Semoga tutorial ini bisa membantu teman-teman untuk membuat kode program yang lebih clean dan efektif. Untuk mengunduh contoh programnya, silakan klik link berikut.

Masih banyak pembahasan menarik di Dicoding Academy Belajar Membangun Game 2D dan 3D dengan Unity yang belum kita bahas di sini, untuk pembahasan lebih jauh silakan kunjungi Academy Belajar Membangun Game 2D dan 3D dengan Unity (https://www.dicoding.com/academies/39). Jika ada pertanyaan, saran atau masukan jangan sungkan untuk menuliskannya di kolom komentar.

Selamat belajar, semoga bermanfaat, dan nantikan tutorial pembuatan game menggunakan Unity selanjutnya.

Belajar mengembangkan aplikasi atau game dengan kurikulum yang telah divalidasi langsung oleh industri dengan Dicoding Academy.

Belajar di Dicoding Sekarang →
Share this:

Leave a comment