// METHODES PRIVEES private void _Init() { //isFading = false; _transition = MusicTransition.none; //_waitingForFading = false; // Mixer if (output == null) Debug.LogError ("Il manque une sortie AudioMixerGroup"); // AudioSource _sourcePlaying = gameObject.AddComponent <AudioSource>() as AudioSource; _sourceWaiting = gameObject.AddComponent <AudioSource>() as AudioSource; _InitAudioSource (_sourcePlaying); _InitAudioSource (_sourceWaiting); }
/// <summary> /// La méthode s'assure que le choix de la transition n'est pas mauvaise. /// </summary> /// <returns>La transition correcte</returns> /// <param name="check">La transition a testé</param> private MusicTransition _CheckTransition(MusicTransition check) { MusicTransitionMode mode = MusicTransitionMode.Cut; if (!_sourcePlaying.isPlaying) { // Si c'est la première lecture, ces transitions sont interdites et remplacés par Fade ou Cut switch (check.mode) { case MusicTransitionMode.Fade: case MusicTransitionMode.FadeOutIn: mode = MusicTransitionMode.Fade; break; default : mode = MusicTransitionMode.Cut; break; } } else if (_sourceWaiting.clip == null) { // Si il n'y a pas de prochain clip, ces transitions sont interdites et remplacés par Fade ou Cut switch (check.mode) { case MusicTransitionMode.Fade: case MusicTransitionMode.FadeOutIn: mode = MusicTransitionMode.Fade; break; default : mode = MusicTransitionMode.Cut; break; } } else { mode = check.mode; } return new MusicTransition (mode, check.time); }
/// <summary> /// Méthode appelé à la fin de chaque transition. Elle inverse les sources Waiting et Playing /// </summary> private void EndTransition() { // On arrête la transition _transition = MusicTransition.none; // On inverse les references. Waiting devient Playing et Playing devient Waiting AudioSource wait = _sourceWaiting; _sourceWaiting = _sourcePlaying; _sourcePlaying = wait; }
// METHODES INTERNE internal void StartTransition(MusicStyle s, MusicTransition t) { // Le style de musique en lecture est celui demandé if (style == s) { Debug.LogWarning ("Musique déjà en lecture"); return; } // Si le style demandé est "Empty". Empty est prioritaire if (s == MusicStyle.Empty) { _GiveToAudioSource (null); _transition = _CheckTransition (t); style = s; return; } AudioClip nextclip = _GetClip (s); // Aucun clip n'a été trouvé if (nextclip == null) { Debug.LogError ("Aucun clip à jouer. Ajoutez des clips à la liste (" + style + ")"); return; } // Si le Clip a bien été chargé dans un AudioSource if (_GiveToAudioSource (nextclip)) { _transition = _CheckTransition (t); style = s; return; } else { Debug.LogWarning ("Impossible de changer de musique pour le moment"); return; } }
/// <summary> /// Arrête la musique. /// </summary> public static void Stop(MusicTransition t) { _instance.StartTransition (MusicStyle.Empty, t); }
// METHODES STATICS /// <summary> /// Permet de jouer un style de musique avec la transition souhaité /// </summary> /// <param name="style">Le style de la musique.</param> public static void Play(MusicStyle s, MusicTransition t) { _instance.StartTransition (s, t); }