コード例 #1
0
ファイル: MusicManager.cs プロジェクト: TheArena/TheArena
        // 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);
        }
コード例 #2
0
ファイル: MusicManager.cs プロジェクト: TheArena/TheArena
        /// <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);
        }
コード例 #3
0
ファイル: MusicManager.cs プロジェクト: TheArena/TheArena
        /// <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;
        }
コード例 #4
0
ファイル: MusicManager.cs プロジェクト: TheArena/TheArena
        // 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;
            }
        }
コード例 #5
0
ファイル: MusicManager.cs プロジェクト: TheArena/TheArena
 /// <summary>
 /// Arrête la musique.
 /// </summary>
 public static void Stop(MusicTransition t)
 {
     _instance.StartTransition (MusicStyle.Empty, t);
 }
コード例 #6
0
ファイル: MusicManager.cs プロジェクト: TheArena/TheArena
 // 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);
 }