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

WaitForSeconds未实现音频延迟,两段音频同时播放问题求助

Unity音频延迟播放失效问题排查与解决

以下是针对你的音频同时播放问题的排查方向和修复方案:

可能的问题原因及解决方法

  • AudioSource变量混淆
    代码中同时声明了source和AudioSource两个同名不同大小写的音频源变量,极易导致赋值错误。检查Inspector面板,确认source变量已正确绑定音频组件,且没有其他逻辑误操作AudioSource变量触发childtalk播放。建议统一变量名(比如改为audioSource)避免混淆。

  • Time.timeScale导致等待失效
    如果项目中Time.timeScale被设置为0(比如场景暂停状态),WaitForSeconds会停止计时,直接跳过等待逻辑。改用WaitForSecondsRealtime,它不受时间缩放影响:

    yield return new WaitForSecondsRealtime(31f);
    
  • 协程被意外中断
    若在Start后31秒内,脚本所在GameObject被销毁,或调用Play()方法提前加载了场景2,协程会被终止,导致音频逻辑混乱。确保Timer协程运行期间,对象和场景保持稳定。

  • 其他代码触发音频播放
    排查项目中其他脚本,确认没有额外的source.PlayOneShot(childtalk)调用,避免两段音频被同时触发。

修正后的示例代码

using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ButtonActionHolder : MonoBehaviour
{
    public AudioSource audioSource;
    public AudioClip drnefariotalk1;
    public AudioClip childtalk;
    public AudioClip drnefariotalk2;

    IEnumerator PlayAudioSequence()
    {
        audioSource.PlayOneShot(drnefariotalk1);
        // 使用不受时间缩放影响的等待逻辑
        yield return new WaitForSecondsRealtime(31f);
        audioSource.PlayOneShot(childtalk);
    }

    void Start()
    {
        StartCoroutine(PlayAudioSequence());
    }

    public void Play()
    {
        SceneManager.LoadScene(2);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:50:05