UnityEvents adalah cara memungkinkan callback yang didorong pengguna untuk bertahan dari waktu edit untuk menjalankan waktu tanpa perlu untuk pemrograman tambahan dan konfigurasi skrip.
UnityEvents berguna untuk sejumlah hal:
Konten didorong callback
Sistem Decoupling
Persistent callbacks
Acara panggilan yang dikonfigurasi
UnityEvent
s dapat ditambahkan ke setiap MonoBehaviour
dan dieksekusi dari kode seperti delegasi .net standar. Ketika UnityEvent
ditambahkan ke MonoBehaviour
muncul di InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary dan callback tetap dapat ditambahkan.
UnityEvent
s memiliki keterbatasan yang sama dengan delegasi standar. Itu, mereka memegang referensi ke elemen yang target dan ini menghentikan target yang dikumpulkan sampah. Jika Anda memiliki UnityEngine. Objek sebagai target dan representasi asli menghilang callback tidak akan diinjak.
Untuk mengkonfigurasi callback di editor ada beberapa langkah untuk mengambil:
Pastikan skrip Anda impor / gunakan UnityEngine.Events
.
Pilih ikon + untuk menambahkan slot untuk callback
Pilih UnityEngine. Tujuan yang Anda inginkan untuk menerima callback (Anda dapat menggunakan pemilih objek untuk ini)
Pilih fungsi yang Anda inginkan
Anda dapat menambahkan lebih dari satu callback untuk acara
Ketika mengonfigurasi UnityEvent
di Inspektur ada dua jenis panggilan fungsi yang didukung:
Secara default UnityEvent
dalam Monobehaviour
mengikat secara dinamis ke fungsi void. Ini tidak harus menjadi kasus sebagai panggilan dinamis UnityEvents mendukung mengikat fungsi hingga 4 argumen. Untuk melakukan ini Anda perlu mendefinisikan kelas UnityEvent
kustom yang mendukung beberapa argumen. Ini cukup mudah dilakukan:
[Serializable]
public class StringEvent : UnityEvent <string> {}
Dengan menambahkan contoh ini ke kelas Anda bukan dasar UnityEvent
itu akan memungkinkan callback untuk mengikat secara dinamis ke fungsi string.
Ini kemudian dapat diinvokasi dengan memanggil fungsi Invoke()
dengan argumen string
.
UnityEvents dapat didefinisikan dengan hingga 4 argumen dalam definisi generik mereka.