声场音频解码器是一种音频组件,它将声场音频格式解码为特定的输出格式,例如立体声或环绕声。此格式取决于您的扬声器配置(菜单:编辑 > 项目设置 > 音频 > 默认扬声器模式),除非您的平台覆盖了此设置。
尽管 Unity 支持声场音频,但默认情况下它不提供内置解码器。相反,您必须选择第三方解码器,或使用您自己的解码器插件在 Unity 之外创建的一组代码,用于在 Unity 中创建功能。在 Unity 中可以使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(特定于平台的原生代码库)。更多信息
参见 术语表。
您可以像设置音频空间化器一种插件,用于更改音频从音频源传输到周围空间的方式。它接收源并根据 AudioListener 和 AudioSource 之间的距离和角度调节左右耳贡献的增益。更多信息
参见 术语表一样设置声场音频解码器。但是,AudioPluginInterface.h
文件中的以下参数特定于声场音频解码器插件
在插件扫描阶段,UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder
标志通知 Unity 这是一个声场解码器效果。要使插件能够作为声场解码器运行,请在效果的描述位字段中设置标志。
`````
definition.flags |= UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder;
`````
Unity 将您的插件列为“项目设置”窗口中的一个选项(菜单:编辑 > 项目设置 > 音频 > 声场解码器插件)。
UnityAudioAmbisonicData
结构类似于 Unity 传递给空间化器的UnityAudioSpatializerData
结构,并且包含一个 ambisonicOutChannels
整数。
声场解码器在 Unity 的音频管道中尽早运行,ambisonicOutChannels
变量告诉插件 Unity 需要使用多少输出通道。ambisonicOutChannels
自动设置为 DefaultSpeakerMode
的通道数。
例如,如果您播放一个具有 4 个通道的一阶声场音频剪辑Unity 中音频数据的容器。Unity 支持单声道、立体声和多声道音频资源(最多 8 个通道)。Unity 可以导入 .aif、.wav、.mp3 和 .ogg 音频文件格式,以及 .xm、.mod、.it 和 .s3m 跟踪模块格式。更多信息
参见 术语表,并且您的扬声器模式为立体声(只有 2 个通道)
声场解码器的处理回调传入 4 作为输入和输出通道数。
ambisonicOutChannels
字段自动设置为 2。
插件将其空间化数据输出到前 2 个通道,并将其他 2 个通道清零。
按照以下步骤为 Unity 开发您自己的声场音频解码器插件
使用原生音频插件 SDK创建自定义音频插件。
在效果的描述位字段中设置标志
definition.flags |= UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder;
完成插件配置后,编译您的文件。确保它可以在您首选的平台上编译。
可选地,将您的文件转换为 .dll 文件。
将您的插件文件移动到 Unity 项目的 Asset 文件夹中。
有关如何在 Unity 中使用声场音频插件的更多信息,请参阅声场音频。
Unity 声场源框架可以支持一阶声场。插件接口包含支持双耳立体声和四边形一个类似于平面的基本对象,但其边长仅为一个单位,它仅使用 4 个顶点,并且表面位于局部坐标空间的 XY 平面上。更多信息
参见 术语表输出的信息,但插件本身确定支持哪些输出。
最初,声场解码器插件支持一阶声场源和双耳立体声输出。不支持二阶声场。
框架中没有任何内容特定于任何可用的不同声场格式。如果剪辑的格式与声场解码器插件的预期格式匹配,则声场音频应该可以正常工作。Unity 首选的声场格式是 B 格式,使用 ACN 分量排序和 SN3D 归一化。
有关如何开发插件的信息,请参阅原生音频插件 SDK和音频空间化器 SDK。您还必须下载音频插件 SDK。