Controller de Son dans Unity

Ok, après pas mal de boulot, je suis enfin prêt a vous montrer comment gérer un Controller de Son dans Unity. La parti deux est presque terminé, il me reste encore quelques bugs à tuer et quelques réglages à peaufiner mais l’ensemble du niveau est fonctionnel.

La théorie d’un Controller de Son dans Unity

Pour la parti théorique, Nous allons créer un script C# qui va contrôler la musique du jeux et les effets sonores rapides qui n’ont pas besoin d’effets de spatialisation 3D (Les canons par exemple ont le son 3D qui diminue plus on est loin de l’objet). Il y aura également les objets qui peuvent jouer du son eux même. On fait donc passer tout ces sons par le AudioMixer et on aura un menu qui va interagir avec ses volumes.

Et apres tout ceci, le son sort enfin sur les enceintes du joueur.

Le détail du fonctionnement

Pour l’utilisation du audioMixer, Unity l’explique très bien (et honnêtement, ce n’est pas très complexe !)

https://unity3d.com/fr/learn/tutorials/modules/beginner/5-pre-order-beta/audiomixer-and-audiomixer-groups

Pour le script c# du Controller de Son dans Unity , je me suis largement inspiré de ce script :

https://unity3d.com/fr/learn/tutorials/projects/2d-roguelike-tutorial/audio-and-sound-manager

j’ai mis un 3eme AudioSource pour pouvoir jouer des sons de test tout en mettant les sons existants en pause. Ceux qui nous donne ceci :

Ne pas oublier le “using UnityEngine.Audio;” au début du script.

Ceux que j’ai ajouté par rapport au script du tuto d’Unity, est la gestion des players prefabs. Pour ceux qui ne conaissent pas ces prefabs, ce sont tout simplement des variables qui sont enregistrer directment sur le PC qui execute le jeu. Il est donc possible de recuperer ces valeurs chaque fois que le joueur lance le jeux. Je m’en sert ici pour stocker les niveaux de son que le joueur a réglé et je les récupère au démarrage du jeux.

On récupère directement les différents audioMixers grâce aux audioSources qui y sont attachés :

L’utilisation du Controller de Son dans Unity

Dans le Audio Mixer, j’ai exposer les valeurs du volume afin de pouvoir les modifier directement par le script du controller :

comme ceci :

Le variable “Volume” est de type single afin de pouvoir interagir avec les sliders d’unity. Cela permet d’attacher notre fonction public “SetMusicVolume” au composant du slider. Il sera appelé a chaque changement de valeur du slider et passera la nouvelle valeur au fonction. On remarquera que les valeurs sont limités entre -80 et +10. Ce sont les valeurs possibles de volume dans le AudioMixer.

Enfin, pour pouvoir lancer un son, il suffit d’appeler l’instance de notre script sound controller comme ceci :

Pas besoin de chercher une référence à un gameobject. Il n’y a qu’un seule instance du soundController grâce a ce bout de code magique :

Pour les plus attentifs. J’ai utiliser le meme principe pour un autre élément qui traque les différents états du jeux, Le GameState.

 

 

 

One thought on “Controller de Son dans Unity

Leave a Reply

Your email address will not be published. Required fields are marked *