答案 0 :(得分:1)
问题来自ElementControl.cs
。在声音发挥之前,你总是在摧毁GameObject。
解决方案1 :
您可以找到以下代码:
Destroy(this.gameObject);
在您的场景中将替换为Destroy(this.gameObject, 5);
。 5 将使其在销毁 GameObject 之前等待 5 秒,并且此时声音可能已完成播放。大约有三个Destroy(this.gameObject);
必须更改。寻找他们。
解决方案2(推荐):
将您的void PlayClickAudio()
功能更改为Coroutine,然后用StartCoroutine替换任何调用它的代码。在它内部播放声音然后使用audio.isPlaying等到声音播放结束。在OnPointerClick
函数中执行其他操作,然后可以使用它来销毁GameObject
Destroy(this.gameObject);
。原始代码也会使用audio.Play(44100)
,在播放前会使延迟。将其更改为audio.Play()
。
以下是解决方案2的新脚本:http://pastebin.com/m1tbVj9k