欢迎光临散文网 会员登陆 & 注册

Unity学习笔记08音频系统

2021-11-30 08:14 作者:挽秋_z  | 我要投稿

音频基础

声音的三个特征:响度,音调,音色

多普勒效应

绑定在动态物体上可以反映出物体的运动速度(如汽车从远至近,再远去,汽车的声音频率会发生明显的变化)

当声源的运动方向与声音传播方向一致时,波长会缩短,所以频率会增加,我们听到的现象就是声音变尖。

反之、在声源离我们远去时,波长增长,频率降低。

实践

播放声音的游戏对象有一个Audio Source组件,用来控制声音的播放,在摄像机上有一个默认组件Audio Listener

(接收器)用来接收声音,点击Scene视图下的喇叭标志,就可以直接听见声音的效果,不需要Play游戏。

Audio Source(声音源)组件的属性

AudioClip:将要播放的声音资源文件。

Output:指的是声音播放出来后是要经过混音器处理后再到达接收处,还是直接到达。

Mute:是否静音

Bypass Effects:音源滤波的开关(是否打开音频特效)

Bypass Listener Effects:监听效果的滤波开关

Bypass Reverb Zones:回音的开关(勾选后就不执行回音效果了)

Play On Awake:场景启动,自动播放

Loop:是否循环播放

Priority:播放的优先级(最高级是0)

Volume:音量大小

Pitch:播放的速度

Stereo Pan:声道占比(只在2D音效中起作用)

Spatial Blend:空间混合,在这里设置是3D还是2D音效

Reverb Zone Mix:回音的混合

3D Sound  Settings:当音源为3D时进行的一些设置,下面的为该设置中的内容

Doppler Level:多普勒效应的级别

Spread:设置3D立体声或者多声道音响的话,在扬声器空间中的传播

Min Distance:指的是在最小距离之内,声音会保持最响亮,在这个距离之外,声音开始减弱,增加这个值,可

以是使声音在3D世界中更响亮(减小反之)

Max Distance:指的是声音停止衰减的距离。超过这个值,保持音量,不会做任何的衰减。

Volume Rolloff :1, Logarithmic Rolloff:对数衰减,接近声源时 ,声音响亮,当远离声源时,声音下降的显  

                                 著快一些

                              2,Linear Rolloff:线性衰减

                              3,Custom Rolloff:自定义的衰减


混音器(AudioMixer)

作用

1.声音接收器获得音源的声音有两种方式(一是声音源直接传给接收器,二是声音源通过混音器将声音传给接收

器)

2.混音器可以对声音进行进一步加工。

声音分类

不同的声源要经过不同的混音器处理,所有必须做好声源的分类整理工作,避免混乱,分类可以使得声音控制更加

合理。

混音器的一些属性

Mixers:当前Project里面的所有混音器资源

Groups:组织和管理当前混音器里的不同的混音组,默认情况下有一个Master主混音组,在其下面可以添加子混

音组。

在Play模式下,点击edit in Play Mode后,可以对混音组进行编辑,并且该编辑会被保存。

每一个混音组都有三个小的按钮,M(Mute:当前混音组静音) ,S(Solo:当前混音组独放),B(Bypass:如

果该混音组添加了特殊的处理算法的话,点上B就是不进行这些处理,听一下原声音)

Snapshots(快照):对混音组进行了各种各样的编辑,但不同的编辑可能应用于不同的场合,新建快照可以单独

进行编辑,只保存于这个快照中。第一个snapshots是默认快照。

Views:为了方便编辑,可以单独只显示某个或者某几个混音组。

音乐的播放可以通过简单脚本来控制。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MixerController : MonoBehaviour
{
   public AudioSource shootSnd;
   public AudioSource explodeSnd;
   // Start is called before the first frame update
   void Start()
   {
       
   }

   // Update is called once per frame
   void Update()
   {
       if(Input.GetMouseButtonDown(0))
       {
           shootSnd.Play();
       }
       if (Input.GetKeyDown(KeyCode.Space))
       {
           explodeSnd.Play();
       }
   }
}


声音特效

为声音添加的常见特效

1,为某一组环境音添加衰减音效。

2,为水下环境添加低通滤波器。

3,出现UI时,衰减所有的游戏音量除了菜单和交互。

4,当NPC交谈时,减弱枪炮的音量。

声音信号分类建议

1,所有声音源放入master分组中

2,音乐、菜单声音和所有的游戏声音是子分组

3,游戏声音再子分为NPC对话、环境音和其他声音,

4,可以再进行子分

混音器快照Snapshot

1,保存混音器的不同设置(音量Volume、音高Pitch、发送级别Send Level、湿混合级别Wet Mix Level、音效参

数Effect Parameters)

2,在游戏进行中进行不同快照的切换(得到不同的声音氛围)

实践

如果在场景中有多个声音源的话,尽可能把它们都输出到同一个Group里面,效率较高。

点击混音组下面的Add可以添加处理效果

Send--Receive

Add--Send,添加该处理后,处理后的声音会输出,需要一个Receive(在另一个混音组添加),并且需要在添加

了Send的混音组中指明哪个Receive来接收。调整Send level可以修改传送的级别。在send出来的这部分,即接收

的混音组,可以为该混音组添加(Add)不同处理效果。

Reverb表示混响效果,混响可以用来模拟一些空旷场地里面的声音传输特点。

为Receive    Add一个SFX Reverb,调整其参数,来模拟不同的空旷场地的声音效果(回声之类的),声音特效的

顺序很重要,是先接收Send的声音。然后再进行特效处理

Add----Echo表示回声效果。(send--receive的机制有益于这种处理,可以让某一个混音组专门来处理回声效果)


混音器中的参数可以通过脚本来控制,选择某一个混音组,右键Volume-->Espose,,,将这个参数开放出来,可以通

过脚本来控制,当将其开放出来后,在AudioMixer模块的右上角的Expose Parameters中就可以看到。并且可以

为开放出来的参数重命名。

新建脚本,下面代码使用上下键来控制音量,要建一个空物体,脚本放到上面,在将需要控制的混音器添加给脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;

public class SFXMixerController : MonoBehaviour
{
   public AudioMixer audioMixer;
   // Start is called before the first frame update
   void Start()
   {
       
   }
   // Update is called once per frame
   void Update()
   {
       float v;
       audioMixer.GetFloat("MyExposedParam", out v);//使用字符串的方式来得到开放出来的参数
       if(Input.GetKeyDown(KeyCode.UpArrow))//用户是否按下了向上的按键
       {
           audioMixer.SetFloat("MyExposedParam", v+1);//修改得到的参数的值,用第二个参数替代
       }
       if (Input.GetKeyDown(KeyCode.DownArrow))//用户是否按下了向下的按键
       {
           audioMixer.SetFloat("MyExposedParam", v - 1);//修改得到的参数的值,用第二个参数替代
       }
   }
}










Unity学习笔记08音频系统的评论 (共 条)

分享到微博请遵守国家法律