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

AudioSource循环播放约5秒后自动停止问题求助

AudioSource循环自动停止的问题排查与修复

你的问题出在PlayOneShot方法的使用上——这个方法本身不支持循环播放,哪怕你设置了m_audioSource2.loop = true也没用。PlayOneShot会创建一个临时的音频实例,只播放一次音频片段,当片段播放完毕后就会自动停止,这就是为什么运行一段时间后声音停了。

而且你的代码逻辑里,每次调用PlayAccelerateSound都在重复设置clip和loop,但这些配置对PlayOneShot完全不起作用,因为它是独立于AudioSource状态的播放方式。

修复方案

把PlayOneShot替换成AudioSource的普通Play()方法,这个方法会遵守你设置的loop属性。修改后的代码如下:

private void PlayAccelerateSound()
{
    m_audioSource2.loop = true;
    m_audioSource2.clip = m_engineSound;

    if (!alreadyPlayed && !m_audioSource2.isPlaying)
    {
        m_audioSource2.Play();
        alreadyPlayed = true;
    }

    // 音调控制逻辑不变
    if (rb.velocity.x < minPitch)
    {
        m_audioSource2.pitch = minPitch;
    }
    else if (rb.velocity.x > maxPitch)
    {
        m_audioSource2.pitch = maxPitch;
    }
    else
    {
        m_audioSource2.pitch = rb.velocity.x;
    }
}

关键改动说明

  1. 用m_audioSource2.Play()替代PlayOneShot:Play方法会使用AudioSource自身的配置(包括loop),设置loop=true后会持续循环播放。
  2. 增加!m_audioSource2.isPlaying判断:防止在音频已经播放时重复调用Play(虽然Play方法本身不会重复启动,但加上这个判断更稳妥,避免意外情况)。

另外,你可以考虑把m_audioSource2.clip = m_engineSound和m_audioSource2.loop = true移到Awake或Start方法里,不用每次调用播放方法都重复设置,提升效率。

内容的提问来源于stack exchange,提问作者alt4s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:25:27