Lors du développement de jeux dans Unity, gérer la persistance des objets lors des changements de scène peut être complexe.
Sans une bonne gestion, cela peut entraîner la perte de données importantes ou des comportements inattendus des objets.
Cet article vous guidera sur l’utilisation de DontDestroyOnLoad et du Singleton Pattern pour assurer la continuité des objets dans Unity.
Créez votre premier jeu 3D en C# avec Unity, étape par étape.
Lorsque vous développez un jeu dans Unity, il est parfois nécessaire de faire en sorte que certains objets persistent d’une scène à l’autre. Par exemple, vous voudrez peut-être que le joueur, les données de jeu ou certains paramètres persistent après un changement de niveau.
Unity offre des outils spécifiques pour créer des objets persistants, et une des méthodes clés est DontDestroyOnLoad() .
- DontDestroyOnLoad()
Cette méthode permet de marquer un objet pour qu’il ne soit pas détruit lorsque la scène change. Elle est idéale pour des objets comme les gestionnaires de données ou les personnages joueurs que vous voulez garder dans tout le jeu.
Voici un exemple simple où un objet, une fois marqué comme persistant, ne sera pas détruit lorsque la scène change.
usingUnityEngine;
publicclassPersistentObject : MonoBehaviour {
privatevoidAwake() {
// Marque l'objet comme persistant
DontDestroyOnLoad(gameObject);
Debug.Log(gameObject.name + " est maintenant persistant.");
}
}
L’ appel DontDestroyOnLoad(gameObject) garantit que l’objet sur lequel le script est attaché reste dans la scène même après un changement. Le choix de Awake() ce justifie par le fait que cette méthode est appelée avant le démarrage du jeu, permettant de marquer l’objet avant tout changement de scène.
- Le Pattern Singleton dans Unity
Le Singleton Pattern est une technique de programmation utilisée pour s’assurer qu’une classe ne puisse avoir qu’une seule instance à la fois. C’est particulièrement utile dans le contexte des objets persistants où vous ne voulez qu’une seule instance d’un gestionnaire de son ou d’autres objets critiques.
Ce script crée un objet persistant en utilisant le pattern Singleton. Si une deuxième instance est créée, elle sera immédiatement détruite.
publicclassSoundManager : MonoBehaviour {
publicstaticSoundManager instance;
privatevoidAwake() {
if (instance == null) {
instance = this;
DontDestroyOnLoad(gameObject);
} else {
Destroy(gameObject);
}
}
}
- public static SoundManager instance :Déclare une variable statique accessible
globalement qui stocke la seule instance du SoundManager.
- Singleton logique :Si aucune instance n’existe, l’objet devient l’instance unique et est
marqué persistant. Si une instance existe déjà, toute tentative de créer une autre instance la détruira automatiquement.
En général, l’ Avantage du Singleton est de garantir qu’un seul SoundManager ou autre
gestionnaire critique est présent à travers toutes les scènes du jeu.
Après avoir maîtrisé la gestion des objets persistants et des Singletons, il est essentiel de comprendre comment les objets interagissent physiquement dans la scène. Prochaine étape : Gérer la collision des objets.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment utiliser DontDestroyOnLoad dans Unity?
Pourquoi utiliser le Singleton Pattern en Unity?
Quels sont les avantages des objets persistants dans Unity?
Comment créer un SoundManager persistant en Unity?
Quelles sont les meilleures pratiques pour gérer les objets persistants?
Conclusion
En maîtrisant les objets persistants et le pattern Singleton, vous optimisez la continuité de vos jeux Unity. Quelle autre technique pourriez-vous explorer pour améliorer vos jeux?