为什么 AudioSource 不播放?

Why the AudioSource does not play?

这是设置

GetComponent<AudioSource>().Play()的时候没有声音,为什么?

当我检查 play on awake 时,会播放声音。为什么?

问题来自 ElementControl.cs。你总是在声音开始播放之前就破坏游戏对象。

解决方案 1:

对您来说,简单的解决方法是找到如下任何代码:

Destroy(this.gameObject); 

然后在您的场景中将其替换为Destroy(this.gameObject, 5);5 会在销毁 5 之前等待 5 秒,并且声音可能已经播放完毕到那个时候。大约有三个 Destroy(this.gameObject); 必须更改。寻找他们。

解决方案 2(推荐)

将您的 void PlayClickAudio() 函数更改为协程,然后将调用它的任何代码替换为 StartCoroutine。在其中,播放声音然后使用 audio.isPlaying 等待声音播放完毕。在 OnPointerClick 函数中做其他事情然后你可以销毁游戏对象 Destroy(this.gameObject);。此外,原始代码使用 audio.Play(44100),这将使播放前 延迟。将其更改为 audio.Play().

这是带有解决方案 2 的新脚本:http://pastebin.com/m1tbVj9k