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); }
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; }