Sound Manager est un outil à créer pour chaque jeu afin de contrôler les sons, les mettre en pause, modifier leurs volumes, etc.
Il permet de rapidement implémenter des sons mais aussi de facilement modifier leurs volumes, activer, mettre en pause et regroupe les sons en catégories pour une rapide connections avec des sliders permettant de contrôler les volumes.
Le SoundManager est un Singleton en DontDestroyOnLoad (Ne se détruit pas au chargement d'une scène).
On y trouve une liste de SoundCategory, cette class permet de stocker, créer et contrôler des sons et de les grouper sous un seul objet.
Category Name : Le nom utilisé par la catégorie.
Sounds : Une liste de SoundSO permettant de créer des sons depuis la catégorie.
Volume : Volume de la catégorie utilisé par l'UI (paramètres de son).
Override Volume : Une valeur permettant de réduire le son de la catégorie (0 : mute, pas de sons; 0.5 : moitié du volume; 1 : volume de la catégorie).
Ainsi que General Volume permettant de modifier le volume de tous les sons dans les catégories.
Un ScriptableObject permettant de configurer différents paramètres pour jouer un son.
Sound Name : Nom utilisé pour chercher le son au sein du SoundManager.
Audio Clip : L'AudioClip utilisé.
Volume : Le volume du son.
Volume Curve : Le comportement du volume pendant que le son est joué.
Play On Awake : Si l'objet son commence à fonctionner après sa création.
Destroy On End : Si l'objet se détruit une fois qu'il a fini de fonctionner.
Start Wait Time : Le temps de pause avant de jouer le son.
Clip Time : Le temps où le son est joué.
Use Audio Clip Length : Si le Clip Time est la durée de l'AudioClip.
End Wait Time : Le temps de pause après avoir joué le son.
Loop Type :
None : Le son ne boucle pas et l'objet cesse de fonctionner après avoir joué le son.
Loop Clip : L'objet joue son temps de pause, joue le clip et boucle pour rejouer le clip encore et encore.
Loop Time : L'objet joue en boucle le temps de pause du début, le clip et le temps de pause à la fin.
Afin de créer un nouveau SoundSO il vous suffit de faire clic doit > Create > RG > SoundManager > SoundSO dans un dossier sur Unity.
Un SoundObject est l'objet créé dans la scène depuis le SoundManager qui jouera le SoundSO attitré.
Il ajoute un AudioSource si il n'y en a pas sur l'objet.
Si vous souhaitez avoir un SoundObject déjà dans une scène alors qu'il n'y a pas encore le SoundManager vous avez accès à des paramètres :
Self Register : Indique à l'objet qu'il doit s'enregistrer dans le SoundManager au lancement de la scène.
Category Name : La catégorie dans laquelle s'enregistrer, si elle n'existe pas la catégorie est créé.
Sound SO : Le SoundSO utilisé par l'objet qu'il soit oui ou non dans la catégorie dans laquelle l'objet s'enregistre.
Un SoundObject à différents états :
Sleep : L'objet n'a pas encore commencé.
WaitStart : L'objet attend avant de jouer le son.
Playing : L'objet joue le son.
WaitEnd : L'objet attend après la fin du son.
Paused : L'objet est en pause (si il jouait le son il le met en pause).
Stopped : L'objet est stoppé (arrête le son si il le jouait).
Finished : L'objet a fini de fonctionner.
Le volume de son AudioSource est déterminé par :
Volume = GeneralVolume * CategoryVolume * CategoryOverrideVolume * SoundSOVolume * SoundSOVolumeCurve
Note : VolumeCurve dépend du temps du ClipTime et de si le son est en train de jouer.