‫Baiklah, jadi dalam kuliah ini, Anda akan belajar tentang delegasi dan acara multicast.
‫Jadi mari kita telusuri dulu masalahnya.
‫Bayangkan kita sedang mengembangkan video game dari awal.
‫Kode kami adalah kombinasi dari grafik dan perpustakaan audio dan logika untuk pemutar kami.
‫Jadi mari kita mulai mengkodekannya.
‫Perhatikan kelas sederhana berikut.
‫Jadi pertama-tama, kami memiliki kelas rendering ini, yang pada awal permainan, kami ingin mengaktifkan mesin
‫rendering dan mulai menggambar visualnya.
‫Jadi itu akan merender dan kemudian akan mulai menggambar visual.
‫Dan juga, saat permainan selesai, kami ingin menghentikan mesin rendering kami.
‫Jadi kami memiliki metode game over yang kemudian akan menghentikan mesin rendering.
‫Jadi di sini saya hanya menggunakan pernyataan baris kanan konsol.
‫Ini tentu saja akan menjadi kode yang jauh lebih kompleks dan ini akan benar-benar melakukan sesuatu.
‫Dalam kasus kami.
‫Kami hanya mencoba memahami konsep delegasi multicast serta acara.
‫Itu sebabnya kami hanya akan menampilkannya melalui pernyataan garis merah di konsol.
‫Jadi itulah kelas rendering kami.
‫Sekarang mari kita lihat kelas sistem audio kita.
‫Jadi di sini, di sistem audio, kami juga memiliki metode permainan dart ini, yang hanya akan memulai sistem audio
‫dan memutar beberapa audio.
‫Dan kemudian kami memiliki metode game over, yang pada dasarnya akan menghentikan sistem audio.
‫Dan akhirnya, kami memiliki pemain dan pemain memiliki nama pemain dan kami memiliki konstruktor sederhana ini di
‫mana kami hanya mengatur nama itu berdasarkan apa yang diteruskan ke objek saat dibuat.
‫Dan Anda juga memiliki permainan awal serta permainan atas metode.
‫OK, jadi yang satu ini akan menelurkan pemain dengan sebuah ide dan yang satu ini
‫hanya akan menghapus pemain dengan ID tertentu yang kami tetapkan sebagai nama pemain.
‫OK, jadi ini adalah tiga kelas kami dan saya akan membuatnya lebih sederhana dengan ini.
‫Jadi mari kita lanjutkan dan pergi ke metode utama kita.
‫Jadi di dalam metode utama kami, kami sekarang akan membuat objek dari sistem tersebut.
‫Jadi pertama dari sistem audio dan kemudian dari mesin rendering.
‫Jadi sangat sederhana, hanya objek sederhana di sini.
‫Dan kemudian kami juga membuat dua pemain dengan ID.
‫Jadi kami memiliki pemain ini, salah satunya adalah Duco, dan kemudian pemain kedua, yang akan menjadi doggle Silva.
‫Jadi kita perlu memulai mesin rendering kita, sistem audio kita dan mensponsori para pemain dengan memanggil metode
‫start game dari masing-masing kelas.
‫Jadi mari kita lakukan itu.
‫Dan saya akan melakukannya dengan cara ini, jadi saya hanya akan mengatakan sistem audio yang memulai mesin rendering game
‫bukan gameplay satu dan pemain untuk memulai game masing-masing.
‫Dan kemudian kami hanya mengatakan permainan sedang berjalan.
‫Tekan sembarang tombol untuk mengakhiri permainan.
‫Jadi yang ingin kami lakukan sekarang adalah pada dasarnya kami ingin mengakhiri permainan begitu pemain harus menekan tombol.
‫OK, jadi tentu saja akan jauh lebih kompleks.
‫Katakanlah pemain menekan keempatnya atau di menu opsi, dia menutup permainan, maka pengadilan berikutnya akan
‫berjalan.
‫Jadi kode berikutnya, tentu saja, untuk memanggil sistem audio, mesin rendering metode game over, metode game
‫over itu, serta metode pemain satu pemain ke game over.
‫Oke, jadi mari kita urus itu.
‫Mari kita tambahkan itu di sini juga.
‫Dan omong-omong, kita akan membutuhkan pernyataan baca karena jika tidak, itu akan langsung mematikannya.
‫Jadi izinkan saya dengan cepat menambahkan pernyataan baca di sini sehingga kita benar-benar dapat menekan tombol secara manual untuk kemudian mematikan
‫semuanya dan pada dasarnya permainan berakhir.
‫Jadi mari kita jalankan ini dengan sangat cepat dan lihat apa yang akan terjadi.
‫Jadi kami melihat sistem audio mulai diputar, mesin rendering dimulai.
‫Kami sekarang melihat visualnya dan kemudian para pemain muncul.
‫Jadi pemain satu dan pemain ke tempat kami.
‫Sekarang permainan sedang berjalan dan kita bisa bermain-main dengannya.
‫Dan kemudian setelah kami ingin menyelesaikannya, kami menekan tombol.
‫Jadi saya akan menekan tombol dan Anda melihat mesin rendering mulai, sistem audio berhenti dan kami
‫menghapus kedua pemain.
‫Jadi ini cukup upaya untuk mengatur ini.
‫Dan saya membayangkan kita harus melakukan ini dengan lebih banyak hal.
‫Dan mungkin ada beberapa hal yang salah.
‫Benar.
‫Jadi katakanlah kita menambahkan lebih banyak sistem, maka ini menjadi jauh lebih kompleks sehingga kita dapat dengan mudah lupa untuk
‫memanggil metode start game atau game over.
‫Atau lebih buruk lagi, kami dapat memanggil salah satu metode ini dua kali, yang dapat menyebabkan semua jenis
‫masalah dan mengharuskan kami untuk menempatkan banyak kode pelindung.
‫Jadi kita harus benar-benar memastikan apakah benda ini hidup?
‫Apakah itu yang disebut metode ini atau harus menyebut metode polisi terlalu rumit?
‫Dan di sinilah delegasi multicast berguna.
‫Delegasi multicast adalah delegasi yang berfungsi sebagai daftar.
‫Word dapat menyimpan referensi ke lebih dari satu metode, dan pada dasarnya hanya itu.
‫Oke, ini terdengar agak rumit, tapi mari kita membangunnya dan mungkin akan lebih masuk akal.
‫Jadi mari kita buat kelas statis yang disebut pengelola acara game.
‫Jadi.
‫Baiklah, jadi mari kita lanjutkan dan buat yang baru.
‫Kelas di sini.
‫Dan saya akan memanggil manajer acara game yang satu ini.
‫Baiklah, jadi pengelola acara game ini sekarang akan memiliki delegasi.
‫Jadi saya akan membuat delegasi baru bernama Game Event.
‫Jadi itu tidak akan mengembalikan apa pun, tetapi itu akan menjadi delegasi yang ketat dan akan menjadi publik
‫sehingga kita dapat menggunakannya di luar kelas ini.
‫Oke, jadi kita telah melihat bagaimana delegasi secara umum bekerja.
‫Dan kita akan menggunakan delegasi ini sekarang untuk memungkinkan kita pada dasarnya menambahkan lebih dari satu acara ke dalamnya.
‫Jadi mari kita buat dua variabel yang disebut pada awal permainan dan pada akhir permainan, dan mereka akan menjadi acara permainan yang tidak
‫aktif.
‫Jadi mereka akan keluar dari tipe delegasi kita.
‫Oke, jadi ini akan menjadi delegasi acara game dan ini akan menjadi delegasi acara game.
‫Jadi kami memiliki dua variabel delegasi yang sekarang dapat kami gunakan.
‫Jadi kembali ke tiga kelas kami.
‫Mari kita mulai game dan metode game over hingga delegasi saat game start dan game over.
‫Juga, metode ini tidak perlu dipublikasikan.
‫Jadi mari kita beralih ke sistem audio dan sekarang mari kita buat kedua
‫metode itu pribadi karena kita tidak perlu mengeksposnya karena kita akan menggunakan konstruktor sistem audio untuk menambahkan atau berlangganan ke
‫acara.
‫Jadi di sini, tempat terbaik untuk menambahkan metode kami ke permainan, delegasi MENAGED, adalah dari dalam konstruktor itu
‫sendiri.
‫Oke, itulah yang kami lakukan di sini.
‫Dan ketika sebuah objek dibuat, metodenya akan secara otomatis ditambahkan ke delegasi atau dengan kata lain,
‫mereka akan berlangganan ke mereka.
‫Jadi apa yang akan terjadi sekarang adalah game awal dan metode game over kita akan
‫ditambahkan ke pengelola acara game pada delegasi Game Start.
‫Dan kami menggunakan tanda plus sama dengan di sini untuk mengatakan, OK, kami ingin menambahkan metode ini ke delegasi multicast
‫itu.
‫Jadi pada dasarnya kita berlangganan dan menunggu event itu terpicu karena begitu
‫event itu terpicu, metode kita akan dipanggil, OK.
‫Jadi kerennya sekarang kita bisa melakukan hal yang sama dengan kelas mesin rendering dan kelas pemain.
‫Jadi yang penting di sini adalah saya menggunakan tanda plus sama dengan dan bukan hanya tanda sama dengan, jadi
‫saya tidak menetapkannya.
‫Dan kita akan melihat nanti apa arti penandatanganan dan apa manfaatnya bagi kita.
‫Tapi di sini kami hanya menambahkan yang lain.
‫Metode untuk kolektor acara kami, sehingga untuk berbicara, manajer acara kami.
‫Oke, jadi ini mengumpulkan semua peristiwa atau metode yang kemudian harus dijalankan.
‫Jadi ini adalah delegasi multi cast.
‫Sekarang, mari kita lakukan hal yang sama dengan mesin rendering kita.
‫Saya ingin Anda melakukannya sendiri.
‫Jadi, sebarkan video dengan sangat cepat dan coba berikan kode yang sama atau buat kode yang sama seperti yang telah kita lakukan
‫di sistem audio di sini.
‫Oke, jadi pertama-tama, saya memastikan bahwa metode saya akan menjadi pribadi karena kita tidak
‫perlu mengeksposnya lagi karena itu tidak perlu, kita tidak akan pernah memanggilnya di luar kelas ini.
‫Itu sebabnya selalu merupakan praktik yang baik untuk menjadikannya pribadi.
‫Apa yang dapat kita sebut, bagaimanapun, adalah hak konstruktor, sehingga kita dapat membuat objek mesin rendering kita
‫sebagai objek publik.
‫Jadi sekarang kita dapat melanjutkan dan menambahkan metode MULAI ke awal yang sedang berlangsung dari pengelola acara game kita juga.
‫Dan hal yang sama berlaku untuk game over.
‫Jadi di sini kita juga menggunakan plus sama dengan.
‫Jadi, kami mengatakan bahwa kami berlangganan acara di awal permainan dan di atas permainan.
‫Jadi pada dasarnya kami mengatakan begitu acara awal permainan akan dipicu, tolong panggil juga metode permainan awal kami.
‫Maksud saya, mesin rendering memulai metode permainan.
‫Jadi itu akan memanggil metode ini.
‫Dan tentunya jika game over, maka metode game over akan disebut yang satu ini disini.
‫Jadi begitulah cara kami menggunakan pendekatan sekarang.
‫Tantangan kecil untukmu.
‫Lakukan hal yang sama di kelas pemain.
‫Oke, jadi pertama-tama, saya harap Anda lulus dan, yah, saya juga tidak akan memastikan bahwa kedua metode ini akan menjadi
‫pribadi karena tidak ada yang seharusnya memanggil metode permainan awal dan permainan berakhir dari
‫luarnya .
‫Tapi kemudian kita sudah memiliki konstruktor di sini, dan saya hanya akan menggunakan
‫konstruktor ini untuk berlangganan game aktif, metode awal game over, acara awal game, dan acara game
‫over.
‫Oke, jadi sekarang di pengelola acara game kami, mari tambahkan ke metode statis publik untuk memicu peristiwa dari metode
‫utama.
‫Jadi di sini kita bisa.
‫Panggil, yah, pada dasarnya jalankan acara ini, karena sekarang pada titik ini, yah, setelah semua mesin
‫rendering, sistem audio, dan pemutar ini dibuat, setelah acara ini akan dipicu, itu akan
‫mengeksekusi sesuatu.
‫Tapi kami belum benar-benar mengatakan apa yang harus terjadi jika itu terjadi.
‫Jadi jika peristiwa itu akan dipicu, jadi mari kita buat metode statis untuk memicu saat permainan dimulai.
‫Jadi metode ini di sini, yah, pertama-tama, periksa apakah acara awal dalam game tidak
‫kosong, artinya metode lain sudah berlangganan, yang pada dasarnya akan terjadi setelah kita membuat mesin
‫rendering.
‫Dan kode ini di sini dijalankan, misalnya, atau sistem audio dibuat dan kode ini dieksekusi atau
‫pemutar dibuat dan kode ini dieksekusi.
‫OK, maka pernyataan ini di sini akan menjadi benar.
‫Jadi event game event START yang sedang berlangsung tidak akan kosong, yang artinya tidak akan null, dan selanjutnya kode ini di
‫sini akan dieksekusi.
‫Jadi apa yang akan dilakukan sekarang adalah mengatakan bahwa permainan telah dimulai dan kemudian akan memanggil permainan mulai yang
‫akan memicu semua metode yang berlangganan ke acara ini.
‫Jadi yang berarti begitu kita memanggil metode ini di sini, jadi acara game ini, bisa
‫dikatakan, begitu kita memanggilnya, metode ini dijalankan di sini.
‫Metode ini dijalankan serta metode ini akan dieksekusi, dan kita akan melihatnya sebentar
‫lagi.
‫Oke, jadi itulah pemicu permainan dimulai.
‫Jadi ini adalah bagaimana kita akan memicunya.
‫Dan dengan hanya memanggil metode ini dan Anda melihat kami membuatnya statis, seperti yang kami lakukan dengan
‫event game itu sendiri, karena kami tidak perlu membuat event manager game untuk memanggil metode ini.
‫Jadi itulah yang ingin kita capai.
‫Itu sebabnya kami membuat ini statis.
‫Jadi, Anda tidak perlu membuat objek untuk memanggil metode ini.
‫Dan kemudian mari kita buat metode statis lain untuk permainan mereka sendiri.
‫Dan saya sarankan Anda memposting video dan Anda mencoba membangun diri Anda sekarang dengan sangat cepat.
‫Oke, jadi saya harap Anda mempostingnya pada dasarnya sama seperti yang telah kita lakukan di sini, tetapi sekarang akan melakukannya
‫dengan permainan PBB di sini.
‫Jadi saya memiliki metode public static, void trigger game over yang akan memicu event dan jika unjam over
‫bukan null.
‫Jadi jika ada metode yang berlangganan acara tersebut, maka ini tidak akan salah dan pada dasarnya akan benar,
‫yang berarti kode ini akan dieksekusi dan pada game
‫over akan dieksekusi, yang kemudian akan memanggil semua metode game over atau semua metode yang ditugaskan atau berlangganan
‫acara game over ini, yang berarti metode ini di sini serta metode ini.
‫Dan akhirnya, tentu saja, metode ini.
‫Jadi sekarang jika kita ingin membuat mesin baru, sekarang kita memiliki mesin rendering dan mesin audio.
‫Katakanlah kita membuat mesin ketiga, maka kita tidak perlu lagi memanggil hal ini secara manual.
‫Tapi kami sudah mengirimkannya ke sana.
‫Apa yang dapat kita atur langsung di mesin tempat kita mengatakan ingin berlangganan acara itu dan metodenya akan
‫secara otomatis dipanggil begitu kita memicu acara itu.
‫Baiklah.
‫Jadi sekarang mari kita lihat kode kita di metode utama, karena ada banyak hal yang terjadi di sini.
‫Jadi sekarang Anda melihat semua kode ini tidak berfungsi lagi, tentu saja, karena semua metode
‫permainan awal ini, sebelumnya bersifat publik, tetapi sekarang tidak lagi.
‫Jadi sekarang mereka.
‫Akan menjadi apa yang mereka pribadi, jadi mereka ditutup.
‫Jadi sekarang mari kita lanjutkan dan pastikan bahwa kita benar-benar memicu event game ini.
‫Jadi di sini kami memiliki pengelola acara permainan dan kami memulai permainan pemicu ini karena itulah yang ingin kami lakukan
‫saat ini.
‫Benar.
‫Jadi setelah semua pemain dan semua sistem Anda dan semuanya siap, kami dapat melanjutkan dan menjalankannya.
‫Dan sekarang kita bisa melakukan hal yang sama dengan metode game over di sini.
‫Jadi mari kita memicu acara game over di sini.
‫Jadi apa yang akan terjadi sekarang adalah memungkinkan kita untuk memastikan bahwa pada dasarnya kita memiliki kode yang jauh lebih sederhana dan
‫lebih bersih.
‫Jadi itu hanya memastikan bahwa kode kita akan bekerja dengan sempurna.
‫Jadi sekarang katakanlah kita menambahkan pemain lain ke dalamnya.
‫Kita tidak perlu memikirkannya dan menyebut semua metode ini dengan benar, yang disebut metode start game, yang disebut metode
‫game over dan lain sebagainya.
‫Kita bisa keluar dan membuat pemain baru ini dan secara otomatis akan memanggil metode yang sesuai.
‫Jadi Anda lihat di sini, permainan telah memulai sistem audio dan mulai memutar
‫audio, mesin rendering, menggambar visual dan kemudian memunculkan pemain Steve Call Douglas Silver dan Dragon Doc.
‫Jadi sekarang mari kita tekan tombolnya.
‫Dan Anda bisa melihat permainan sudah berakhir, sistem audio berhenti, mesin rendering berhenti, dan kami
‫menghapus semua pemain.
‫Jadi itulah kekuatan delegasi multicast.
‫Super, super berguna, sangat kuat.
‫Dapat melihat bahwa pemain objek ketiga kami menyelesaikan permainan awal dan permainan berakhir.
‫Metode dipanggil secara otomatis karena objek kami diberi tahu saat peristiwa saat game dimulai dan saat game
‫berakhir dipicu.
‫Sekarang, saat menggunakan delegasi, beberapa hal bisa salah.
‫Mari kita lihat dulu beberapa kesalahan yang bisa menghabiskan waktu berjam-jam untuk kita perbaiki, katakanlah karena kesalahan.
‫Alih-alih berlangganan metode ke acara kami menggunakan tanda plus sama dengan.
‫Mari kita pergi ke, misalnya, kelas pemain.
‫Alih-alih menggunakan tanda sama dengan plus, kita akan secara tidak sengaja menggunakan tanda sama dengan.
‫Jadi kompiler tidak mengatakan bahwa ini salah karena ini tidak salah.
‫Anda juga dapat mengganti acara yang ada hanya dengan satu metode.
‫Jadi apa yang kami lakukan di sini adalah kami mengatakan apa pun yang berlangganan saat ini, kami
‫akan menimpanya.
‫Dan itulah yang pada dasarnya akan terjadi di sini.
‫Jadi kami akan menghapus semua metode yang direferensikan dalam game mulai dan pada acara game over dan
‫pengaturan pemain di objek pemain terakhir, tepatnya, yang dibuat sebagai satu-satunya berlangganan semua acara
‫ini.
‫Juga, karena memulai game over sebenarnya bersifat publik, kami dapat memanggil mereka langsung dari mana saja.
‫Jadi katakanlah kita ingin memanggil pengelola acara game di game mulai dari sini, maka kita bisa melakukannya juga.
‫Jadi sekarang mari kita jalankan kodenya.
‫Dan Anda bisa melihat.
‫Pemain pemijahan dengan diam yang sama dan Dong Naga Perak, permainan telah mulai bermain pemijahan
‫dengan Anjing Naga kami di Dong Naga.
‫Jadi ya, pertama acara itu dipicu oleh program kami.
‫Ya.
‫Dan kemudian dari pemain terakhir kami, yaitu Anjing Naga kami.
‫Ini juga disebut awal yang sedang berlangsung sekali lagi.
‫OK, jadi pada dasarnya itulah yang terjadi di sini.
‫Jadi kita benar-benar harus berhati-hati di sini.
‫Itu adalah sesuatu yang bisa sangat sulit untuk diperbaiki.
‫Jadi sekarang kami dapat menandai acara kami sebagai pribadi karena kami membutuhkannya untuk menjadi publik untuk berlangganan mereka di
‫konstruktor kelas kami.
‫Jadi sekarang kami telah menggunakan nama acara ketika berbicara tentang delegasi karena delegasi kami benar-benar
‫berperilaku seperti acara.
‫Tetapi pada kenyataannya, ada jenis delegasi khusus yang disebut acara dan itu dibuat untuk mencegah kesalahan semacam
‫ini.
‫Baiklah.
‫Jadi sekarang ada keyboard cantik yang membantu kita mencegah kesalahan ini.
‫Dan itu adalah kata kunci event karena pada dasarnya delegasi yang kita buat di event manager game kita
‫di sini, event game statis publik ini adalah sebuah event.
‫Jadi kita bisa saja menggunakan kata kunci event ini di sini.
‫Dan ini akan mencegah kita bahkan dari membuat kesalahan ini, karena sekarang Anda melihat bahwa tidak senang
‫dengan apa yang telah kita lakukan di sini sehingga kita dapat menimpa delegasi.
‫Tetapi ketika datang ke acara, kami hanya dapat berlangganan ke mereka.
‫Dan acara ini tidak bisa kita sebut secara langsung.
‫Ini akan dipicu dari pengelola acara game secara langsung sehingga kami tidak dapat lagi memanggil acara tersebut secara langsung, karena di
‫Game Start sekarang adalah sebuah acara dan kami hanya akan diizinkan untuk memanggilnya dari dalam kelas tempat acara
‫itu dibuat.
‫Dan juga, itu memaksa kita untuk memperlakukannya seperti daftar, jadi memiliki acara di sisi kiri tanda sama dengan
‫tidak diperbolehkan.
‫Jadi sesuatu seperti ini, seperti yang telah kita lihat, tidak diperbolehkan.
‫Baiklah.
‫Dan sekarang jika kami menjalankan aplikasi lagi, Anda akan melihat bahwa itu bekerja dengan sempurna.
‫Biarkan saya menjalankan kode.
‫Dan itu bekerja dengan sangat baik.
‫Jadi ini adalah contoh yang cukup ringkas dan agak sederhana karena kami melihat delegasi, multisaluran, delegasi, dan acara
‫dalam satu video.
‫Tapi saya harap video ini menjelaskan keuntungan apa yang Anda miliki saat bekerja dengan delegasi dan
‫acara.
‫Dan hal yang keren adalah Anda sekarang telah melihat cara membuat delegasi Anda
‫sendiri serta acara Anda sendiri, karena kita akan melihat lebih banyak acara nanti saat menggunakan UI.
‫Misalnya, ketika Anda mengklik sesuatu, maka suatu peristiwa dipicu dan banyak hal dapat
‫berlangganan.
‫Beberapa ibu dapat berlangganan acara yang dipicu dan kemudian dieksekusi sekali, misalnya,
‫tombol diklik atau tombol apa pun di keyboard diklik.
‫Baiklah.
‫Jadi sekarang mari kita simpulkan dengan sangat cepat.
‫Acara adalah bentuk terbatas dari delegasi yang dipaksa untuk berperilaku seperti daftar sehingga kami hanya dapat menambahkan atau
‫menghapus metode darinya sehingga kami dapat berlangganan atau berhenti berlangganan menggunakan tanda plus sama atau minus sama dengan, tetapi
‫bukan tanda sama dengan delegasi memungkinkan penugasan langsung melalui delegasi saya sama dengan metode saya.
‫Melakukannya menggantikan metode lain apa pun yang telah ditambahkan sebelumnya.
‫Jadi berhati-hatilah di sini.
‫Juga, acara hanya dapat dipanggil oleh kelas yang mendefinisikannya dari luar kelasnya.
‫Anda hanya dapat mendaftar dan membatalkan pendaftaran metode untuk mereka.
‫Oke, jadi saya harap Anda menikmati video ini dan ini memberi Anda ide yang bagus tentang acara dan delegasi dan saya berharap dapat
‫melihat Anda di video berikutnya.