Techniques d'intégration multimédia, prof(s):
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.
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).
Une fois importé dans vos Assets, un fichier de son est maintenant un AudioClip du point de vue de Unity.
Le composant AudioSource peut être ajouté à un GameObject. Il a pour rôle de jouer un AudioClip.
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);
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).
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();