Exemplo n.º 1
0
        /// <summary>
        /// Play Bgm audio track.
        /// </summary>
        /// <param name="audio">Audio clip and settings SO</param>
        /// <param name="transition">Audio transition SO</param>
        public void Play(IAudioSO audio, BgmTransitionSO transition = null)
        {
            // Stop playing bgm(s) currently playing
            var outgoingTransition = transition != null ? transition.Outgoing : null;

            Stop(outgoingTransition);

            // setup audio source
            audio.LoadAsync().ContinueWith(() => {
                // play bgm
                var audioRef = CreateBgmReference(audio);
                audioRef.AudioSource.Play();

                if (transition != null && transition.Incoming != null)
                {
                    // apply volume transition
                    ApplyVolumeTransition(audioRef, audio.Details.MaxVolume, transition.Incoming).Forget();
                }
                else
                {
                    audioRef.AudioSource.volume = audio.Details.MaxVolume;
                }


                audioReferences.Add(audioRef);
            });
        }
Exemplo n.º 2
0
        BgmReference CreateBgmReference(IAudioSO audio)
        {
            // create new bgm GameObject
            var audioSourceObj = new GameObject("Bgm Source");

            audioSourceObj.transform.SetParent(Mic.Transform);
            audioSourceObj.transform.localPosition = Vector3.zero;

            // create and setup bgm audio source
            var audioSource = audioSourceObj.AddComponent <AudioSource>();

            audioSource.outputAudioMixerGroup = audioMixerGroup;
            audioSource.clip = audio.GetAudioClip();
            audioSource.loop = audio.Details.Looping;

            return(new BgmReference(audio, audioSourceObj, audioSource));
        }
Exemplo n.º 3
0
 public BgmReference(IAudioSO audioSO, GameObject gameObject, AudioSource audioSource)
 {
     AudioSO     = audioSO;
     GameObject  = gameObject;
     AudioSource = audioSource;
 }