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

Unity麦克风设为1小时录制却10-20秒后停止问题求助

问题诊断与修复方案

核心问题分析

你遇到的笔记本麦克风异常,主要源于三个潜在问题:

  • 硬编码使用Microphone.devices[0],但不同设备的默认麦克风索引不一定为0,部分设备可能因权限或驱动问题无法被识别;
  • 重复调用MicToAudioClip时未清理旧的麦克风资源,导致音频冲突,引发录制中断;
  • 缺乏麦克风启动状态检测,无法及时处理启动失败的情况。

修复步骤与代码优化

1. 修复设备选择逻辑

避免直接依赖索引0,先检测可用麦克风列表,同时处理无设备的异常情况。

2. 优化资源管理

初始化时只获取一次AudioSource,重启麦克风前先停止旧录制,防止资源泄漏。

3. 添加状态检测与容错

等待麦克风就绪后再播放音频,退出时释放麦克风资源。

修改后的完整代码:

AudioSource audioSource;
int sampleRate;
string activeMicDevice;

void Start()
{
    // 获取系统采样率
    AudioConfiguration audioConfiguration = AudioSettings.GetConfiguration();
    sampleRate = audioConfiguration.sampleRate;

    // 初始化AudioSource并设置循环播放
    audioSource = GetComponent<AudioSource>();
    audioSource.loop = true;

    // 检测可用麦克风
    if (Microphone.devices.Length == 0)
    {
        Debug.LogError("未检测到可用麦克风设备");
        return;
    }

    // 选择第一个可用麦克风(可扩展为UI让用户手动选择)
    activeMicDevice = Microphone.devices[0];
    StartMicrophoneRecording();

    // 定时重启麦克风录制(间隔2700秒)
    InvokeRepeating("RestartMicrophoneRecording", 2700, 2700);
}

void StartMicrophoneRecording()
{
    // 停止当前正在进行的录制
    if (Microphone.IsRecording(activeMicDevice))
    {
        Microphone.End(activeMicDevice);
    }

    // 启动麦克风录制
    audioSource.clip = Microphone.Start(activeMicDevice, true, 3600, sampleRate);
    
    // 等待麦克风初始化完成
    while (!(Microphone.GetPosition(activeMicDevice) > 0)) { }
    
    audioSource.Play();
    Debug.Log($"已启动麦克风录制: {activeMicDevice}");
}

void RestartMicrophoneRecording()
{
    if (string.IsNullOrEmpty(activeMicDevice)) return;
    
    Debug.Log("正在重启麦克风录制...");
    StartMicrophoneRecording();
}

void OnApplicationQuit()
{
    // 退出时释放麦克风资源
    if (Microphone.IsRecording(activeMicDevice))
    {
        Microphone.End(activeMicDevice);
    }
}

额外排查建议

  • 系统权限确认:让用户检查系统设置,确保游戏已获得麦克风访问权限(Windows在隐私设置、Mac在系统偏好设置-安全性与隐私中配置);
  • 驱动更新:无反应的用户需更新笔记本麦克风的官方驱动,老旧驱动易出现兼容性问题;
  • 采样率适配:若仍有中断,可尝试固定采样率为44100或48000(替换sampleRate的值),部分笔记本麦克风不支持系统动态采样率;
  • 状态可视化:在游戏中添加音量显示UI,实时反馈麦克风是否在正常录制,方便用户快速排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:40:35