📜  unity 音频源 - C# (1)

📅  最后修改于: 2023-12-03 15:20:53.607000             🧑  作者: Mango

Unity 音频源 - C#

Unity 音频源是一个可用于 Unity 引擎的 C# 类,它为开发者提供了多种音频操作和数据读取的方法。该类可以帮助开发者控制音频的播放、暂停、停止、循环等行为,同时还可以获取音频的详细信息以及实时数据(如分贝值、频谱等等)。下面是 Unity 音频源的一些常用方法和属性:

属性
AudioClip

类型为 AudioClip,用于指定要播放的音频资源。可以通过代码或编辑器来设置该属性的值。

代码示例:

public AudioClip myClip; // 在编译器中设置或通过代码设置 AudioClip 属性
BypassEffects

类型为 bool,用于控制音效处理器是否对音频源进行处理。默认值为 false。

代码示例:

mySource.BypassEffects = true; // 不使用音效处理器
BypassListenerEffects

类型为 bool,用于控制 Listener 处理器是否对音频源进行处理。默认值为 false。

代码示例:

mySource.BypassListenerEffects = true; // 不使用 Listener 处理器
BypassReverbZones

类型为 bool,用于控制混响区域是否对音频源进行处理。默认值为 false。

mySource.BypassReverbZones = true; // 不使用混响区域
Clip

类型为 AudioClip,在上面已经介绍过,用于指定要播放的音频资源。

IsPlaying

类型为 bool,用于判断当前音频是否正在播放。

代码示例:

if(mySource.isPlaying) // 当前音频正在播放
{
    // do something
}
Loop

类型为 bool,用于控制音频是否循环播放。默认值为 false。

代码示例:

mySource.Loop = true; // 循环播放
Mute

类型为 bool,用于判断音频是否静音。默认值为 false。

代码示例:

mySource.Mute = true; // 静音
PanStereo

类型为 float,用于设置音频的立体声平衡。范围为 -1(完全左声道)到 +1(完全右声道),默认值为 0(居中平衡)。

代码示例:

mySource.PanStereo = -0.5f; // 将声音平衡设置为稍微向左
Pitch

类型为 float,用于设置音频的音调。默认值为 1(原始音调)。

代码示例:

mySource.Pitch = 1.1f; // 音调升高 10%
Priority

类型为 int,用于设置音频的优先级。该属性值越高,则该音频将被优先播放。默认值为 128。

代码示例:

mySource.Priority = 256; // 设置优先级为 256
SpatialBlend

类型为 float,用于控制空间混响和 3D 环境下的音效。该属性值范围为 0 到 1,表示非位置音频和位置音频的比例。默认值为 0(全局模式,无位置音效)。

代码示例:

mySource.SpatialBlend = 0.75f; // 部分使用位置音效
Time

类型为 float,用于获取或设置当前音频的时间。

代码示例:

if(mySource.time >= 10) // 当前音频已经播放了 10 秒
{
    // do something
}
mySource.time = 30; // 将当前音频的时间设置为 30 秒
TimeSamples

类型为 int,用于获取或设置当前音频的采样数(Sample)。

代码示例:

if(mySource.timeSamples >= 44100) // 当前音频已经播放了 1 秒
{
    // do something
}
mySource.timeSamples = 0; // 将当前音频的采样数设置为 0
VelocityUpdateMode

类型为 AudioVelocityUpdateMode,用于控制音频源是否基于刚体的移动速度计算 Doppler 效应。默认值为 Auto。

代码示例:

mySource.VelocityUpdateMode = AudioVelocityUpdateMode.Fixed; // 不考虑刚体运动速度的影响
Volume

类型为 float,用于设置音频的音量大小。范围为 0(静音)到 1(最大音量),默认值为 1。

代码示例:

mySource.Volume = 0.5f; // 将音量设为一半大小
方法
Stop

停止当前音频的播放。

代码示例:

mySource.Stop(); // 停止当前音频
Pause

暂停当前音频的播放。

代码示例:

mySource.Pause(); // 暂停当前音频
Play

开始播放当前音频。

代码示例:

mySource.Play(); // 开始播放当前音频
事件
onAudioFilterRead

当音频源正在播放并需要获取新的音频数据时,该事件将被触发。事件参数 AudioSampleProvider 提供了音频数据的读取和写入。

代码示例:

void OnAudioFilterRead(float[] data, int channels)
{
    // data 是一个 float 数组,其中包含 samplesPerFrame 和通道数(由 channels 参数指定)的音频数据
    // 做一些处理...
}
结论

通过 Unity 音频源的详细介绍,我们可以看出它是一个非常实用的 C# 类,能够帮助开发者控制音频的各种操作行为,以及获取音频的详细信息和实时数据。在从事音频相关开发的过程中,学习和使用 Unity 音频源将会非常有益。