You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:06:25