Hari baik!Hari ini saya ingin berbicara singkat tentang penggunaan acara untuk menghilangkan sampah dan menyediakan fungsi yang kompleks dan dinamis untuk kode tersebut. Perlu dicatat bahwa artikel ini lebih berfokus pada pemula yang ingin mempelajari lebih lanjut tentang sistem acara.
Kami akan menganalisis seluruh masalah ini menggunakan contoh sistem kontrol suara. Sistem ini akan memungkinkan kami untuk mengaktifkan / menonaktifkan musik dan suara di pengaturan game.
Sebelum kita membuat kelas manajer yang akan mengelola pengaturan suara dan musik, kita akan membuat kelas serializable sederhana. Ini akan digunakan sebagai model data untuk menghemat JSON.
using System.Collections; using System.Collections.Generic; using UnityEngine;
Sekarang Anda dapat mulai menulis kelas manajer. Kami akan menginstalnya pada adegan pertama. Manajer ini akan menjadi objek global dan tidak akan dihapus ketika berpindah dari satu adegan ke adegan lainnya.
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO;
Sekarang setelah manajer siap, Anda dapat membuat objek kosong pada adegan awal Anda dan
beri nama, misalnya,
"_AUDIO_MANAGER" , dan kemudian tambahkan kelas manajer kami ke sana. Anda dapat melakukan ini hanya dengan memanggil menu tambah komponen pada objek dan memilih
"Manajer Game" => "Manajer Audio" .
Setelah itu, kita perlu menulis komponen yang akan kita dok ke setiap objek dengan AudioSource.
using System.Collections; using System.Collections.Generic; using UnityEngine;
Dengan cara ini kita dapat mengontrol suara / musik dalam game. Contoh ini sama sekali tidak mengatakan bagaimana melakukannya dengan benar, tetapi hanya menunjukkan operasi sistem acara dan pendengar di Unity3D.
Dan akhirnya, saya ingin berbicara tentang apa yang baru saja kami gunakan. Dalam contoh di bawah ini, delegasi dari mana pendengar diciptakan dinyatakan:
public delegate void AudioSettingsChanged(); public event AudioSettingsChanged OnAudioSettingsChanged;
Anda dapat mengatur kinerja pendengar di bawah kondisi tertentu dan melekat padanya metode tertentu yang akan dilakukan ketika kondisi ini tercapai.
Dan dengan bantuan delegasi, atas dasar yang kami buat pendengar, Anda dapat membuat fungsi Callback. Ini bisa sangat berguna untuk metode asinkron (misalnya, ketika mengirim permintaan POST asinkron).
Saya harap Anda menemukan sedikit pengalaman saya yang berguna dalam masalah ini dan Anda dapat menerapkan contoh ini pada proyek Anda. Saya juga akan dengan senang hati menjawab pertanyaan Anda (jika seseorang tidak memahami sesuatu).