C# BufferedWaveProvider在Unity中不工作

C# BufferedWaveProvider在Unity中不工作,c#,audio,unity3d,naudio,C#,Audio,Unity3d,Naudio,我正试图将诺迪奥落实到团结中。我设法链接了NAudio dll,但当我尝试使用NAudioBufferedWaveProvider播放音乐时,遇到了一个奇怪的错误 如果我选择此选项: WaveOut player; BufferedWaveProvider buf; AudioFileReader reader; void Start () { reader = new AudioFileReader(@"..\music.mp3"); // some music playe

我正试图将诺迪奥落实到团结中。我设法链接了NAudio dll,但当我尝试使用NAudio
BufferedWaveProvider
播放音乐时,遇到了一个奇怪的错误

如果我选择此选项:

WaveOut player;
BufferedWaveProvider buf;
AudioFileReader reader;
void Start () {

    reader = new AudioFileReader(@"..\music.mp3"); // some music

    player = new WaveOut();
    player.Init(reader );

    player.Play();
}
音乐播放正常,没有任何问题

但当我尝试使用
BufferedWaveProvider
时:

WaveOut player;
BufferedWaveProvider buf;
AudioFileReader reader;
void Start () {

    reader = new AudioFileReader(@"..\music.mp3"); // some music

    buf = new BufferedWaveProvider(reader.WaveFormat);

    byte[] tmp = new byte[50000];
    reader.Read(tmp, 0, tmp.Length); //read 50000 bytes

    buf.AddSamples(tmp, 0, tmp.Length); //add bytes to buf

    player = new WaveOut();
    player.Init(buf); //init the WaveOut with buff

    player.Play(); // play
}
它不起作用!我调试了很多次,发现
BufferedWaveProvider
正在使用示例(BufferedBytes正在降低),但我没有从中得到任何声音

我之所以使用BufferedWaveProvider,是因为有一个更复杂的项目,但在这样一个简单的例子中,它已经是一个问题了

我错过了什么


注意:相同的代码在C#Windows窗体中工作…

尝试使用
WaveOutEvent
而不是
WaveOut
,至少在其中一个项目中对我有效

正如马克指出的那样:

它之所以有效,是因为默认情况下,
WaveOut
使用Windows消息回调,因此如果您没有gui线程(例如,您在控制台应用程序中),则无法使用它,并且应首选
WaveOutEvent


这似乎真的管用,但我不知道为什么,谢谢!这是因为WaveOut默认使用Windows消息回调,所以如果您没有gui线程(例如,您在控制台应用程序中),则无法使用它,最好使用WaveOutEvent