Jeu Vidéo 2

Techniques d'intégration multimédia, prof(s):

Jouer un son

Ce document explique les principes élémentaires qui permettent de faire jouer des sons dans Unity.

Le contrôle et la gestion des sons peut être assez complexe dans Unity. Seulement le strict nécessaire est couvert ici: les notions plus avancées seront abordées plus tard.

Les formats de sons principaux
  • wav
  • aif
  • ogg
  • mp3
Lequel choisir?

Préferez wav ou aif pour les sons courts (effets sonores par exemple).

Préferez ogg ou mp3 pour les sons longs (musique d'ambiance par exemple).

AudioClip

Une fois importé dans vos Assets, un fichier de son est maintenant un AudioClip du point de vue de Unity.

AudioSource

Le composant AudioSource peut être ajouté à un GameObject. Il a pour rôle de jouer un AudioClip.

Jouer un son d'effet sonore

Quand on veut jouer un son ponctuel par programmation (un effet sonore par exemple), on accède au composant AudioSource et on utilise sa méthode PlayOneShot() en précisant l'AudioClip qu'on veut jouer. Vous n'avez pas à associer le son à jouer au composant AudioSource dans l'inspecteur: c'est par programmation que la lecture va s'effectuer.

// Champs requis - placer au dessus de la méthode Start()
private AudioSource _monAudioSource;
[SerializeField] private AudioClip _monAudioClip; // Associer votre AudioClip à ce champ exposé dans l'inspecteur

// Dans Start()
_monAudioSource = GetComponent<AudioSource>();

// Pour faire jouer le son au moment voulu...
_monAudioSource.PlayOneShot(_monAudioClip);

Jouer une musique d'ambiance

Le plus souvent, l'AudioClip de notre musique est associé dans l'inspecteur au champ nommé "AudioClip" du composant AudioSource. On peut alors régler directement dans l'inspecteur quelques paramètres pour notre musique (principalement Play on Awake, Volume et Loop).

inspecteur Audiosource
Contrôle du son d'un AudioClip (démarrer/arrêter une musique d'ambiance par exemple)

Par programmation, il est possible d'arrêter ou de démarrer la lecture d'un son associé à un composant AudioSource en s'adressant au composant lui-même:

private AudioSource _monAudioSource;
[SerializeField] private AudioClip _monAudioClip;

// Dans Start()
_monAudioSource = GetComponent<AudioSource>();

// Joue le son associé dans l'inspecteur à cet AudioSource:
_monAudioSource.Play();

// Arrête la lecture du son associé dans l'inspecteur à cet AudioSource:
_monAudioSource.Stop();