Gestion des événements dans Unity : personnalisation de l'abonnement aux événements pour GameObjects
Introduction :
Implémentation de l'événement la gestion dans Unity à l'aide de C# peut être difficile, en particulier lors de la gestion d'événements sur plusieurs GameObjects. Ce guide explore une approche pratique de la conception d'un système d'événements qui permet à des GameObjects d'un type spécifique de s'abonner à un événement particulier sans avoir besoin de préfabriqués individuels.
Définition d'événements Unity personnalisés :
Au lieu de s'appuyer sur des gestionnaires d'événements statiques et des délégués personnalisés, Unity fournit une solution simplifiée via UnityEvent. Cette classe offre une interface graphique intuitive dans la fenêtre Inspecteur, vous permettant de connecter des fonctions d'autres scripts à l'événement sans avoir besoin d'abonnements explicites à des événements.
Exemple avec UnityEvent :
Créez un script nommé BigScript.cs avec le code suivant :
using UnityEngine; using System.Collections; using UnityEngine.Events; public class BigScript : MonoBehaviour { [Header("Here's a cool event! Drag anything here!")] public UnityEvent whoa; private void YourFunction() { whoa.Invoke(); } }
Invocation de l'événement :
YourFunction();
Connexion des fonctions avec Arguments :
Pour les événements qui nécessitent des arguments, vous pouvez créer des classes UnityEvent personnalisées :
[System.Serializable] public class _UnityEventFloat : UnityEvent<float> {}
Ensuite, utilisez le UnityEvent personnalisé dans votre script :
public _UnityEventFloat changedLength; void ProcessValues(float v) { changedLength.Invoke(1.4455f); }
Lorsque vous connectez des fonctions avec des arguments, utilisez la section "Flottant dynamique" dans le Inspecteur.
Conclusion :
En tirant parti de UnityEvent et des classes UnityEvent personnalisées, vous pouvez créer efficacement des systèmes d'événements dans Unity, permettant à des GameObjects de types spécifiques de s'abonner et de répondre aux événements. dynamiquement sans avoir besoin de configurations préfabriquées complexes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!