Contenu du cours
Unity pour Débutants
Unity pour Débutants
Gestionnaire de Son
Comprendre le Singleton dans Unity
Dans Unity, un Singleton est un modèle de conception qui garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global à celle-ci. Cela est particulièrement utile pour gérer les composants de jeu qui doivent persister à travers différentes scènes, comme un SoundManager
.
Comment fonctionne le Singleton dans Unity
-
Instance unique : la classe
SoundManager
déclare une variable statique publiqueinstance
de son propre type. Cette variable contient l'unique instance de la classeSoundManager
; -
Initialisation dans la méthode
Start()
: lorsque leGameObject
avec ce script devient actif, Unity appelle automatiquement la méthodeStart()
. Ici, l'instance Singleton est initialisée :- Si
instance
estnull
, cela signifie qu'aucunSoundManager
n'existe encore, donc l'instance actuelle (this
) est assignée àinstance
, en faisant le Singleton; - Si
instance
n'est pasnull
, un autreSoundManager
existe déjà, ce qui ne devrait pas se produire dans un modèle Singleton. Dans ce cas, leGameObject
actuel est détruit en utilisantDestroy(gameObject)
pour maintenir le modèle Singleton.
- Si
-
Persistance à travers les scènes : la méthode
DontDestroyOnLoad(gameObject)
est utilisée pour s'assurer que leGameObject
(et donc l'instanceSoundManager
) persiste entre les changements de scène. Cela est crucial pour maintenir un comportement audio cohérent à travers différentes scènes.
Accéder à l'instance Singleton
Une fois configuré, d'autres scripts peuvent facilement accéder aux fonctionnalités du SoundManager
dans tout le jeu en utilisant SoundManager.instance
. Par exemple, pour jouer un effet audio, un autre script peut appeler SoundManager.instance.PlayEffect(index)
. Cela permet à n'importe quel script du jeu d'interagir avec le SoundManager
sans créer plusieurs instances ou se soucier de l'initialisation.
Avantages de l'utilisation du Singleton
-
Gestion centralisée : fournit un point central pour gérer les fonctionnalités liées au son, facilitant le contrôle et la maintenance de la lecture audio dans tout le jeu;
-
Accès global : l'instance Singleton peut être accédée globalement depuis n'importe quel script, permettant aux différentes parties du jeu d'interagir avec le système sonore de manière transparente;
-
Persistance : assure une lecture audio cohérente tout au long du jeu sans interruption lors des changements de scène.
-
Instance statique :
public static SoundManager instance;
déclare une variable statique qui contiendra l'unique instance de la classeSoundManager
; -
Méthode Start : la méthode
Start()
est appelée lorsque le script devient actif. Elle vérifie siinstance
estnull
(ce qui signifie qu'aucune instance n'existe encore). Si c'est le cas, elle assigne l'objet actuel (this
) àinstance
, en faisant le Singleton; -
Destruction des doublons : si
instance
n'est pasnull
, cela signifie qu'une autre instance existe déjà, donc leGameObject
actuel est détruit pour maintenir le modèle Singleton; -
Persistance :
DontDestroyOnLoad(gameObject);
assure que leGameObject
persiste à travers les changements de scène, permettant auSoundManager
de maintenir son état et ses fonctionnalités tout au long du jeu.
Accéder à l'Instance Singleton
Une fois que le SoundManager
est configuré comme un Singleton, d'autres scripts peuvent facilement accéder à ses fonctionnalités dans tout le jeu :
D'autres scripts peuvent accéder à l'instance du SoundManager
en utilisant SoundManager.instance
.
Par exemple, pour jouer un effet audio, un autre script peut appeler SoundManager.instance.PlayEffect(index)
.
De cette manière, n'importe quel script dans le jeu peut accéder à l'instance du SoundManager
et à ses fonctionnalités sans avoir besoin de créer plusieurs instances ou de se soucier de l'initialisation.
Avantages dans Unity
Utiliser le modèle Singleton dans Unity, en particulier pour les gestionnaires comme le SoundManager
, offre plusieurs avantages :
Gestion Centralisée : il fournit un point central pour gérer les fonctionnalités liées au son, facilitant le contrôle et la maintenance de la lecture audio dans tout le jeu.
Accès Global : l'instance Singleton peut être accédée globalement depuis n'importe quel script, permettant aux différentes parties du jeu d'interagir avec le système sonore de manière transparente.
Persistance : l'instance Singleton persiste à travers les scènes, assurant une lecture audio cohérente dans tout le jeu sans interruption lors des changements de scène.
1. Quel est le but de la variable d'instance dans la classe SoundManager
?
2. Que fait DontDestroyOnLoad(gameObject)
dans la classe SoundManager
?
Merci pour vos commentaires !