Exemplo n.º 1
0
        //再生(直前があればフェードアウトしてから再生)
        void PlayFade(SoundData data, float fadeInTime, float fadeOutTime, bool corssFade)
        {
            //フェードアウト中のがあったら消す
            if (FadeOutAudio != null)
            {
                GameObject.Destroy(FadeOutAudio.gameObject);
            }

            //現在のオーディオがないなら即座に鳴らす
            if (Audio == null)
            {
                Audio = CreateNewAudio(data);
                //即時再生
                Audio.Play(fadeInTime);
            }
            else
            {
                //今鳴っているものをフェードアウト
                FadeOutAudio = Audio;
                Audio        = CreateNewAudio(data);
                FadeOutAudio.FadeOut(fadeOutTime);
                if (corssFade)
                {
                    //即座に鳴らす
                    Audio.Play(fadeInTime);
                }
                else
                {
                    //フェードアウトを待ってから鳴らす
                    if (Audio != null)
                    {
                        Audio.Play(fadeInTime, fadeOutTime);
                    }
                }
            }
        }
Exemplo n.º 2
0
    public void StartPlayingTrack(AudioSource source)
    {
        PlayTrack   playTrack = new PlayTrack(source);
        FadeInAudio fadeIn    = new FadeInAudio(source, fadeInTime, musicVolume);

        playTrack.Then(fadeIn);

        if (currentActiveSources.Count > 0)
        {
            FadeOutAudio fadeOut = null;
            for (int i = currentActiveSources.Count - 1; i >= 0; i--)
            {
                fadeOut = new FadeOutAudio(currentActiveSources[i], fadeOutTime);
                Services.TaskManager.AddTask(fadeOut);
                currentActiveSources.Remove(currentActiveSources[i]);
            }
            fadeOut.Then(playTrack);
        }
        else
        {
            Services.TaskManager.AddTask(playTrack);
        }
        currentActiveSources.Add(source);
    }