我试图绕过 Unity AudioSource(因为麦克风输入的延迟问题)并让 Unity 直接从 Windows 获取麦克风输入。我正在使用 NAudio.dll.
问题是,当我在 Unity 中运行时,出现空引用异常错误 - 在“var deviceEnum = new MMDeviceEnumerator();”之后
“NullReferenceException:对象引用未设置到对象的实例
System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider 提供程序、System.String 格式、System.ParamsArray 参数)(在
using System;
using System.Collections.Generic;
using UnityEngine;
using NAudio.CoreAudioApi;
using System.Linq;
public class WasapiMic : MonoBehaviour
{
private void Start()
{
WasapiCapture();
}
public void WasapiCapture()
{
var deviceEnum = new MMDeviceEnumerator();
foreach (var device in deviceEnum.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active))
{
Debug.Log($"{device.ID}: {device.DeviceFriendlyName} / {device.FriendlyName}");
}
}
}
我遗漏了一些明显的东西,但我不知道是什么。如果你能帮忙,谢谢!
我预计 var deviceEnum = new MMDeviceEnumerator();将使用连接到 Windows 计算机的任何和所有麦克风设备填充数组。但它似乎是空的,尽管尝试了两个不同的 USB 麦克风(都通过统一 AudioSource 工作)。