Unity 2D报错:无法播放已禁用的AudioSource,求解决方案
问题原因
错误提示“无法播放已禁用的音频源”是因为你在调用coinAudioSource.Play()后立刻执行了Destroy(gameObject),如果coinAudioSource挂载在当前硬币对象上,销毁对象会立即禁用AudioSource组件,导致音频无法正常播放。
解决方案
1. 延迟销毁对象,等待音频播放完成
修改OnTriggerEnter2D方法,在音频播放时长后再销毁对象:
private void OnTriggerEnter2D(Collider2D collider2D) { coinAudioSource.Play(); // 等待音频播放完毕后销毁对象 Destroy(gameObject, coinAudioSource.clip.length); }
2. 将AudioSource挂载到持久化对象上
把AudioSource组件移到场景中不会被销毁的对象(比如GameManager)上,确保硬币销毁时AudioSource依然可用,修改代码引用该对象的AudioSource即可。
3. 使用PlayOneShot播放音效
如果不需要复用AudioSource的状态,可以用PlayOneShot方法,同时建议延迟销毁对象:
private void OnTriggerEnter2D(Collider2D collider2D) { coinAudioSource.PlayOneShot(coinAudioSource.clip); Destroy(gameObject, coinAudioSource.clip.length); }
注意:如果coinAudioSource是动态赋值的,要确保它在播放时没有被禁用或销毁。
内容的提问来源于stack exchange,提问作者Linus Kluge
相关产品推荐
相关产品推荐

