我正在尝试播放声音,但它没有播放
这是我的代码:
public void Replay()
{
playAudio ();
Application.LoadLevel (Application.loadedLevel);
}
void playAudio()
{
AudioSource audio = GetComponent<AudioSource> ();
audio.Play();
}
点击按钮时,我正在呼叫Replay()
。但是,声音没有播放。
如果我评论Application.LoadLevel (Application.loadedLevel);
,声音会正常播放。
如何使用Application.LoadLevel()
播放声音?
答案 0 :(得分: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);
}
答案 1 :(得分:0)
您调用play方法并在其后加载场景。尝试在加载级别之前调用playAudio()
。
public void Replay() {
Application.LoadLevel(Application.loadedLevel);
playAudio();
}
答案 2 :(得分:0)
我认为你没有给音频源播放声音的机会,因为在执行播放后,你立即重新加载场景,因此不再存在相同的音频源实例,一个新的创建的实例尚未收到播放命令。您可以使用协同例程或其他方式使用一些小延迟来为音频源提供所需的时间。 (如果你想在加载电平之前播放声音,否则只需在Start()回调中播放声音)