如何在Unity中使用Naudio

问题描述 投票:0回答:2

我想在我的Unity项目中使用NAudio的一些功能,但不知道如何在Unity中安装NAudio。

我尝试了什么:

·使用NugetforUnity,安装Naudio,Naudio.core

· 下载Naudio-Unity.dll,放在assets/Plugin/

当我在场景中的游戏对象上添加脚本时,编写如下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using NAudio.Wave;
using NAudio.Wave.SampleProviders;
using Naudio-Unity;

public class NewBehaviourScript : MonoBehaviour
{
    void Start()
    {

        for (int n = -1; n < WaveOut.DeviceCount; n++)
        {
            var caps = WaveOut.GetCapabilities(n);
            Debug.Log($"{n}: {caps.ProductName}");
        }
    }

    void Update()
    {
    }
}

仍然存在编译错误,Unity无法识别WaveOut。对这个问题有帮助吗?提前致谢。

c# unity3d naudio
2个回答
0
投票

我最近遇到了同样的问题。直觉的想法是从NuGet Gallery下载dll文件。当我第一次复制到 Plugins 文件夹时,由于 windowsform api,Unity 报告错误。我决定下载单个 dll 文件,它可以工作。

NAudio dll in Unity Plugins folder


0
投票

Unity 中的集成 Naudio: 打开您的 Unity 项目并创建一个新的 C# 脚本。

1 在 Visual Studio 中打开 C# 脚本

2 在 Visual Studio 中,转到“工具”>“NuGet 包管理器”>“管理解决方案的 NuGet 包”。

3 在“浏览”选项卡中,搜索“NAudio”并安装包。 (安装版本 1.8.0 因为新版本不能在 Unity 中工作)

4 安装包后,您可以通过在脚本顶部添加以下 using 语句来在脚本中使用 NAudio 库:

using NAudio.Wave;

这是 Github 的通用链接 https://github.com/naudio/NAudio/releases

5 你需要下载 NAudio-1.8.0-Release.ziphttps://github.com/naudio/NAudio/releases/download/NAudio_1.8_Release/NAudio-1.8.0-Release.zip

6 在您的 Unity 项目中,如果尚不存在,请在“Assets”目录中创建一个新的“Plugins”文件夹。

7 将 NAudio.dll 文件和其他文件从 NAudio-1.8.0-Release.zip 复制到“插件”文件夹中。

现在你可以使用NAudio了

此代码示例(如果您使用此示例代码,请不要忘记更改文件路径并检查脚本名称:)):

using UnityEngine;
using NAudio.Wave;

public class AudioPlayer : MonoBehaviour
{
    private IWavePlayer wavePlayer;
    private WaveStream waveStream;
    private string audioFilePath = "D:/Walker Hayes - AA (Official Video).mp3";
    void Start()
    {
        // Create WaveStream obj for stream
        waveStream = new Mp3FileReader(audioFilePath);

        // Create WaveOut obj for play stream
        wavePlayer = new WaveOut();
        wavePlayer.Init(waveStream);
        wavePlayer.Play();
    }

    void OnApplicationQuit()
    {
        //stop play
        if (wavePlayer != null)
        {
            wavePlayer.Stop();
            wavePlayer.Dispose();
        }
        if (waveStream != null)
        {
            waveStream.Dispose();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.