Unity音频剪辑无限循环实现及循环失效问题解决
Audio Source循环一小时后停止的修复方案
一、原生循环功能说明
Unity的Audio Source勾选Loop后理论上支持无限循环,出现停止大概率是音频文件本身问题、引擎内存/缓存异常,或是播放状态被意外修改。
二、排查与修复步骤
- 检查音频文件:
- 确认音频没有损坏,导出时要设置正确的循环标记(比如WAV文件需指定循环起止点,部分格式缺少循环头信息的话,Unity循环到末尾可能无法跳转)。
- 换个其他音频文件测试,排除文件本身的问题。
- 检查组件与对象状态:
- 确保Audio Source所在的GameObject没被销毁、失活,组件也没被禁用。
- 排查其他脚本,看是否有代码修改了Audio Source的
loop属性、调用了Stop()方法,或者改变了isPlaying状态。
- 引擎版本与设置:
- 升级Unity到稳定版本,旧版本可能存在音频循环的bug。
- 检查项目音频设置(Edit > Project Settings > Audio),关闭自动暂停或内存限制类的选项。
三、脚本兜底方案(稳定无限循环)
如果上述排查都没用,可以用脚本监听播放状态,自动重启循环:
using UnityEngine; public class AudioLoopGuard : MonoBehaviour { private AudioSource _audioSource; private void Awake() { _audioSource = GetComponent<AudioSource>(); if (_audioSource == null) { Debug.LogError("当前GameObject没有AudioSource组件"); return; } _audioSource.loop = true; } private void Update() { // 当循环开启但音频停止时,自动重启 if (_audioSource.loop && !_audioSource.isPlaying && _audioSource.time > 0) { _audioSource.Play(); } } }
把这个脚本挂在带Audio Source的GameObject上即可,它会持续监测,确保循环不中断。
内容的提问来源于stack exchange,提问作者spjennie
相关产品推荐
相关产品推荐

