Pelaksanaan Sistem Acara dalam Unity dengan UnityEvent
Dalam Unity, sistem acara membolehkan komunikasi antara komponen dan objek yang berbeza dalam permainan anda. Apabila menggunakan pendekatan C#, anda boleh mencipta acara tersuai menggunakan UnityEvent.
UnityEvent untuk Acara Tersuai
Untuk mencipta acara tersuai dengan UnityEvent, tentukan UnityEvent awam dalam anda skrip, seperti ini:
public UnityEvent whoa;
UnityEvent menyediakan cara yang mudah dan intuitif untuk mengendalikan acara tanpa memerlukan perwakilan eksplisit atau tandatangan fungsi.
Contoh Pelaksanaan
Dalam skrip "BigScript.cs" anda:
using UnityEngine; using UnityEngine.Events; public class BigScript : MonoBehaviour { [Header("Here's a cool event! Drag anything here!")] public UnityEvent whoa; private void YourFunction() { whoa.Invoke(); } }
Dalam Inspektor, anda boleh menyeret dan melepaskan skrip lain ke medan acara "whoa". Skrip ini akan mengandungi fungsi yang digunakan apabila peristiwa "whoa" dicetuskan.
Untuk mencetuskan acara dari dalam komponen "BigScript", cuma panggil kaedah Invoke() pada acara "whoa".
Mengendalikan Hujah dalam Acara Tersuai
Untuk acara yang memerlukan hujah, anda boleh menentukan subkelas UnityEvent anda sendiri dengan parameter jenis generik. Contohnya, untuk mencipta acara yang mengambil hujah apungan:
[System.Serializable] public class _UnityEventFloat : UnityEvent<float> {}
Kemudian, dalam skrip anda, anda boleh mentakrifkan acara dan menggunakannya seperti berikut:
public _UnityEventFloat changedLength; void ProcessValues(float v) { // ... changedLength.Invoke(1.4455f); }
Apabila menyeret skrip lain ke medan acara dalam Inspektor, pastikan anda memilih bahagian "Apungan dinamik" untuk mengendalikan hujah dengan betul.
Pelaksanaan Praktikal
Untuk senario khusus anda di mana berbilang objek perlu melanggan acara biasa, anda boleh mencipta skrip tersuai dan melampirkannya pada prefab untuk kategori "kakitangan". Dalam skrip itu, anda boleh melanggan acara "Hari selesai". Apabila acara dicetuskan, skrip akan melaksanakan tindakan yang diperlukan untuk ahli "kakitangan".
Pendekatan ini membolehkan anda melanggan acara secara berpusat dalam prefab, menghapuskan keperluan untuk melanggan secara manual setiap objek instantiated individu .
Atas ialah kandungan terperinci Bagaimanakah UnityEvent Dapat Memudahkan Pengendalian Acara dalam Pembangunan Permainan Perpaduan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!