不幸的是,我制作的这个音频衰减功能遇到了障碍。它包含一个源、持续时间和一个新剪辑。它应该淡出初始剪辑,替换剪辑并将音量恢复到 1。
public static IEnumerator FadeSwitchAudio(AudioSource audioSource, float duration, int clip)
{
float firstTimer = 0;
float secondTimer = 0;
float start = audioSource.volume;
// Fade audio out, works as intended
while (firstTimer < duration)
{
firstTimer += Time.deltaTime;
audioSource.volume = Mathf.Lerp(start, 0.01f, firstTimer / duration);
yield return null;
}
audioSource.clip = GameObject.FindWithTag("AudioManager").GetComponent<AudioManager>().clips[clip];
// Fade audio back in, volume jumps immediately to 1 and audiosource stops having output
yield return new WaitForSeconds(0.1f);
while (secondTimer < duration)
{
secondTimer += Time.deltaTime;
audioSource.volume = Mathf.Lerp(start, 1.0f, secondTimer / duration);
yield return null;
}
}
我尝试了很多不同的计时器功能,但是,增加音频源的音量似乎总是会破坏它。是否有可靠的方法可以在不完全丢失输出的情况下缓慢增加源的音频?这是检查器中当前行为的 gif。请原谅低分辨率,但你可以看到行为。
感谢您的时间!