---
title: SDK 中包含的原生音频插件示例
product: Unity Editor
version: '6000.0'
latest_version: '7000.0'
status: This page documents version 6000.0. The latest version is 7000.0.
canonical: https://docs.unity.com/zh-cn/engine/6000.0/manual/audio/mixer-native-audio-plugin/native-plugin-examples
latest_url: https://docs.unity.com/zh-cn/engine/7000.0/manual/audio/mixer-native-audio-plugin/native-plugin-examples.md
last_updated: 2026-10-30
generated_at: 2026-11-08T18:39:29.066Z
locale: zh-cn
---

# SDK 中包含的原生音频插件示例

> Example DSP plug-ins with and without GUI customization.

[音频插件 SDK](https://github.com/Unity-Technologies/NativeAudioPlugins) 包含各种不同的音频插件类型。SDK 中的插件代码在公共领域可用，因此您可以将此代码用作模板。该项目包含带有和不带自定义 GUI 的原生 DSP 插件示例。

如果要使用集成开发环境 (IDE) 编辑和编译示例插件代码，SDK 会包含多个 IDE 的项目。下表显示了每个 IDE 的项目位置：

| **IDE**           | **位置**                                                                                 |
| ----------------- | -------------------------------------------------------------------------------------- |
| **Visual Studio** | `NativeAudioPlugins-master\NativeCode\VisualStudio\AudioPluginDemo.sln`（插件项目）。         |
| **Visual Studio** | `NativeAudioPlugins-master\GUICode\AudioPluginDemoGUI\AudioPluginDemoGUI.sln`（GUI 项目）。 |
| **XCode**         | `NativeAudioPlugins-master\NativeCode\Xcode\AudioPluginDemo.xcodeproj`                 |
| **UWP**           | `NativeAudioPlugins-master\NativeCode\UWP\AudioPluginDemo.sln`                         |

要访问 Unity 中的示例插件，请执行以下操作：

1. 打开 `demos` Unity 项目（文件夹：**NativeAudioPlugin** > **Assets**）。

2. 在 Unity 项目中，转到**资源 (Assets)** > **混合器 (Mixer)**。

3. 单击一些混合器旁边的箭头以展开。

4. 单击任何混音器组控制器。在检视面板中，将显示附加到混音器组控制器的任何效果。

5. 要添加效果，请单击**添加效果 (Add Effect)** 按钮。这将列出您可以添加的所有示例插件效果。

6. 选择要添加的效果。Unity 将在检视面板中显示您的效果。

如果在打开检视面板的情况下进入运行模式，某些效果会随着声音的变化而更新。

## 没有自定义 GUI 的插件示例##example-no-gui

本节列出了 `AudioNativePlugin` 项目中包含的一些示例插件，这些插件具有默认的 Unity 滑动条，而不是自定义 GUI。

要直接访问插件代码文件，请在 SDK 文件夹中转到 `NativeAudioPlugins/NativeCode`。


**没有自定义 GUI 的简单插件。:**
![](/api/media?file=/engine/6000.0/media/images/AudioMixerStereoWidener.png)

### NoiseBox 插件##the-noisebox-plug-in

NoiseBox 插件是一种将输入信号与可变频率的白噪声相加和相乘的插件。您可以将其与 Lofinator 插件和动画参数结合使用，以模拟手机声音、无线电接收不良和扬声器损坏等效果。

### Ring Modulator 示例插件##the-ring-modulator-example-plug-in

Ring Modulator 示例插件是一个简单的调制器示例，它可将任何输入信号乘以正弦波。这会产生无线电噪声或信号丢失效果。要增加效果，请将具有不同频率的多个振铃调制效果串联在一起。

### StereoWidener 示例插件##the-stereowidener-example-plug-in

StereoWidener 可将立体声输入信号分解为具有可变延时的单声道分量和侧向分量，然后重新组合这些分量以改善感知的立体声效果。

### Lofinator 插件##the-lofinator-plug-in

Lofinator 插件可对信号进行简单的下采样和量化。您可以将其与 NoiseBox 插件和动画参数结合使用，以模拟手机声音、无线电接收不良和扬声器损坏等效果。

## 具有自定义 GUI 的音频插件示例##example-with-gui

本节提供高级插件用例，包括均衡和多频段压缩的效果。这些插件的参数数量多于上一部分中的插件。某些插件参数对于默认滑动条而言过于复杂。

要直接访问示例自定义 GUI 代码，请在 SDK 文件夹中找到 `NativeAudioPlugins-master\GUICode\AudioPluginDemoGUI`。

### Equalizer 示例插件##the-equalizer-example-plug-in

Equalizer 插件包含一个显示图表，用于显示结果曲线和各个滤波器贡献值。要更改一个或多个参数值，请单击并拖动控制图上的参数。这样就无需单独更改每个滑动条。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/AudioMixerCustomGUI.png)

拖动控制图上的三个波段可更改滤波器曲线的增益和频率。要更改每个波段的形状，请按住 Shift 并单击和拖动波段。

您可以使用 Unity 的内部 API 函数绘制曲线，并绘制频率响应的抗锯齿曲线。

### 用于分析插件数据和 GUI 性能的代码##code-to-analyze-plug-in-data-and-gui-performance

Equalizer 和 Multiband 插件还提供代码来覆盖输入和输出频谱，以可视化插件的效果。GUI 代码的更新速度远低于音频处理，并且无法访问音频流。因此，为了读取这些数据，本机代码将提供以下函数：

```
UNITY_AUDIODSP_RESULT UNITY_AUDIODSP_CALLBACK GetFloatParameterCallback(
    UnityAudioEffectState* state,
    int index,
    float* value,
    char *valuestr)
{
    EffectData::Data* data = &state->GetEffectData<EffectData>()->data;
    if(index >= P_NUM)
        return UNITY_AUDIODSP_ERR_UNSUPPORTED;
    if(value != NULL)
        *value = data->p[index];
    if(valuestr != NULL)
        valuestr[0] = 0;
  return UNITY_AUDIODSP_OK;
}
```

此函数使 GUI 能够从原生插件读取浮点数据。此外还有一个名为 `GetFloatBufferCallback` 的数组变体。只要请求不影响 UI 或本机代码的性能，插件系统就会接受任何数据。

对于 Equalizer 和 Multiband 代码，有一个名为 `FFTAnalyzer` 的实用程序类，可轻松从插件中馈入输入和输出数据并获得频谱。然后，`GetFloatBufferCallback` 会重新采样此频谱数据，并将其发送到 C# GUI 代码。

必须重新采样数据，以便 `FFTAnalyzer` 以固定的频率分辨率运行分析，而 `GetFloatBufferCallback` 只返回请求样本的数量，这取决于显示数据的视图宽度。

### CorrelationMeter 示例插件##the-correlationmeter-example-plug-in

CorrelationMeter 插件具有最少的 DSP 代码。此插件将左声道的振幅与右声道的振幅进行绘制，以显示信号的立体声效果。


**CorrelationMeter 插件的自定义 GUI。:**
![](/api/media?file=/engine/6000.0/media/images/AudioMixerDemoCorrelationMeter.png)


**覆盖了频谱分析的 Equalizer GUI（绿色曲线表示源，红色表示已处理）。:**
![](/api/media?file=/engine/6000.0/media/images/AudioMixerDemoMultiband.png)

Equalizer 效果和 Multiband 效果都是有意保持简单并且未进行优化，但我们认为它们是插件系统支持的更复杂 UI 的参考典范。

### 响度监控工具##loudness-monitoring-tool

这是在 3 个不同时间标度测量响度的响度监测工具的示例。这仅用于演示目的，但可以让您构建符合现代响度标准的监测工具。Unity 中内置了曲线渲染代码。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/AudioMixerDemoLoudnessMeter.png)

### 与 DSP 时钟同步##synchronizing-to-the-dsp-clock

您还可以使用插件系统来生成声音，而不处理声音。

`Plugin_TeeBee.cpp` 和 `Plugin_TeeDee.cpp` 是简单的合成器，具有以下功能：

* 使用随机音符生成图案
* 具有用于调整合成引擎中的滤波器和波封的参数

`ProcessCallback` 将读取 `state->dsptick` 参数以确定歌曲中的位置。此计数器是全局样本位置。要使所有插件效果与基于样本的同一时钟保持同步：

1. 将计数器除以样本中指定的每个音符的长度。

2. 当此除法的余数为零时，向合成引擎触发一个音符事件。

如果要通过这样的效果播放具有已知节奏的预录制音乐，请使用时间信息对音乐应用节奏同步滤波器效果或延迟。

## 空间化##spatialization

Spatialization SDK 是使用原生音频插件 SDK 作为基础的插件示例。空间化 SDK 允许您开发自定义空间化效果，以实例化每个音频源。有关更多信息，请参阅[空间音响 SDK](/engine/6000.0/manual/audio/mixer-native-audio-plugin/spatializer-sdk.md)。

## 其他资源##additional-resources

* [混音器](/engine/6000.0/manual/audio/mixer.md)

* [原生音频插件 SDK](/engine/6000.0/manual/audio/mixer-native-audio-plugin.md)

* [空间音响](/engine/6000.0/manual/audio/mixer-native-audio-plugin/spatializer-sdk.md)

***
