示例#1
0
    private void CreateFade(int channelID, float targetVolume, float duration, float delay)
    {
        FadeInstruction fade = new FadeInstruction();

        fade.channelID    = channelID;
        fade.startVolume  = channels[channelID].volume;
        fade.targetVolume = targetVolume;
        fade.duration     = duration;
        fade.timer        = -delay;
        fadeInstructions.Add(fade);
    }
示例#2
0
    private void ApplyFade(int id)
    {
        FadeInstruction fade   = fadeInstructions[id];
        AudioSource     source = channels[fade.channelID];

        fade.timer += Time.deltaTime;
        if (fade.timer > 0)
        {
            float t = fade.timer / fade.duration;
            source.volume = Mathf.Lerp(fade.startVolume, fade.targetVolume, t);
            if (fade.timer > fade.duration)
            {
                fadeInstructions.RemoveAt(id);
                return;
            }
        }
        else
        {
            fade.startVolume = source.volume;
        }
        fadeInstructions[id] = fade;
    }