【问题标题】:Unity sound not playingUnity声音不播放
【发布时间】:2015-12-18 10:41:10
【问题描述】:

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

这是我的代码:

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

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

    audio.Play();
}

当一个按钮被点击时,我打电话给Replay()。但是,声音没有播放。

如果我备注Application.LoadLevel (Application.loadedLevel);,声音播放正常。

我应该怎么做才能让Application.LoadLevel()的声音播放?

【问题讨论】:

  • 您确定在播放声音文件时您的AudioListeners 就位吗?你的AudioClip 是 2D 还是 3D 声音?

标签: audio unity3d


【解决方案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);
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我认为你不给音频源播放声音的机会,因为执行播放后,你立即重新加载场景,所以相同的音频源实例不再存在,一个新的实例是尚未收到播放命令的已创建。您可以使用协同程序或其他方式使用一些小的延迟来为音频源提供所需的时间。 (如果你想在加载关卡之前播放声音,否则只需在 Start() 回调中播放声音)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-05
        • 1970-01-01
        • 2015-03-20
        • 2011-02-25
        • 2020-02-15
        • 2015-12-22
        • 2022-01-25
        相关资源
        最近更新 更多