Unity声音不播放

4

我正在尝试播放声音,但是它没有播放。

这是我的代码:

public void Replay()
{
  playAudio ();
  Application.LoadLevel (Application.loadedLevel);
}

void playAudio()
{
    AudioSource audio = GetComponent<AudioSource> ();

    audio.Play();
}

当按钮被点击时,我会调用 Replay()。但是声音没有播放。
如果我注释掉 Application.LoadLevel(Application.loadedLevel),声音就可以正常播放。
我应该怎么做才能让声音在使用 Application.LoadLevel() 时播放?

你确定在播放声音文件时已经设置好了你的“AudioListener”吗?你的“AudioClip”是2D还是3D声音? - brain56
3个回答

1

在声音播放完之前,AudioSource会被移除。

以下是使用yield等待声音完成的替代方案。

public void Replay()
{
    StartCoroutine("ReplayRoutine");
}

IEnumerator ReplayRoutine()
{
    AudioSource audio = GetComponent<AudioSource>();

    audio.Play();
    yield return new WaitForSeconds(audio.clip.length);

    Application.LoadLevel(Application.loadedLevel);
}

0

你调用了play方法并在之后加载场景。尝试在加载关卡之前调用playAudio()

public void Replay() {
    Application.LoadLevel(Application.loadedLevel);
    playAudio();
}

0
我认为你没有给音频源播放声音的机会,因为在执行播放后,你立即重新加载了场景,所以相同的音频源实例不再存在,新的实例被创建,但尚未接收到播放命令。你可以使用协程或其他方式来延迟一小段时间,以便给予音频源所需的时间。(如果你想在加载级别之前播放声音,否则只需在Start()回调中播放声音)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接