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
相关产品推荐
相关产品推荐

