【Unity入门教程】 第九章 音频系统【中国大学MOOC游戏引擎原理及应用】

以下均为来自中国大学mooc 游戏引擎原理及应用时的学习笔记,不含商用,仅供学习交流使用,如果侵权请联系作者删除。

9.1 音频基础

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为了真实性 有必要在unity中模拟出真实的多普勒效应
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们可以在unity商店下载到两个免费资源casual game fpx 和一个absolute music
直接将导入好的音乐拖拽过来,系统会为我们创建一个子物体:
在这里插入图片描述
其实main camera自带一个组件
在这里插入图片描述
在这里插入图片描述
当我们把音乐拖拽过来时,我们开启这个标志就可以听到有音乐

在这里插入图片描述
output代表是直接传到人耳中 还是经过一个混音器
mute是是否静音的意思
BypassEffect 音源滤波的开关 是否打开音频特效
Bypass Listener Effect指的是监听效果的滤波开关 是否打开或者绕过监听滤波
Bypass Reverb Zones代表是否打开回声的开关 当勾选的时候就不执行回音的效果了
Play On Awake指的是场景启动自动播放
Loop 循环播放
Priority是播放的优先级 最高级的是零 最低级的是256 默认是128
Volume是音量的大小 范围是从零到一
Pitch是播放速度
Stereo Pan是声道占比 只在2D音效中起作用
Spatial Blend是空间混合 在这个地方设置是3D还是2D音效
如果设置为3D的音效
在这里插入图片描述

则会出现靠近的时候音效变大,远离的时候音效变小的效果

Reverb Zone Mix 回音的混合

在这里插入图片描述

3D sound setting 当你的音源设计为3D效果的话,进行的一些设置
多普勒level 设置高了之后我们会明显感觉如果快速接近物体则物体的音频会发生较大的变化
Spread指的是设置3D立体声或者多声道音响的话,在扬声器空间中的传播(我感觉这个像是左声道右声道的变化

MinDistance 在最小距离内 声音会保持最响亮 当超过这个距离 声音就会开始变小 增加声音的最小距离可以使得声音在3D世界中更响亮
Max Distance指的是声音停止衰减的距离 超过这一点的话保持音量并不会做衰减了
在这里插入图片描述

Logarithmic Rolloff对数衰减 当你远离声源的时候 声音衰减的很快
在这里插入图片描述

Linear Rolloff 线性衰减
在这里插入图片描述

Custom Rolloff自定义衰减
在这里插入图片描述
可以在这里Add Key然后自行调整

在这里插入图片描述
当我们移动物体的时候便可以看到有一条红线会移动 如上图所示

9.2 混音器

在这里插入图片描述
要注意音频处理和场景图处理是分开进行的,有时候我们需要音频处理的位置,和他们在场景中的声音源是没有关系的,有时候又需要有关系,比如声音的衰减。

有关位置的属性最终怎么处理呢,这就需要我们放在混音器中执行。

在这里插入图片描述
有时候一个声音减小之后我们需要另外一个声音增大,比如说新闻联播中的时候从主持人变到记者,画面的播放会使得主持人声音减小记者声音增大。

unity中实现
在这里插入图片描述
可以在文件菜单栏中创建一个Audio_Mixer
然后可以为其在Groups的主混音器里创建子
在这里插入图片描述
创建好之后我们便可以在音乐物体组件下的output选择将其输出到哪个混音器里

播放的时候可以直接调整 并会保存下来
在这里插入图片描述
s代表solo
M代表是否静音
B是bypass 代表当这个上面有什么算法的特效处理的时候 如果我们选中它 它就不会进行这些处理了

有时候为了保留一个原值 我们可以创建一个副本 只在副本里进行修改
在这里插入图片描述
这个view则是只看某个
在这里插入图片描述

可以在Groups这里新建一个group
在这里插入图片描述
然后mixer也新建一个mixer
在这里插入图片描述
然后可以将新的mixer加到这个mixer 使之成为上面那个mixer的子物体

我们接下来通过脚本来控制声音

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
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();
        }
    }
}

在这里插入图片描述
然后只要创建一个空物体并为其添加上声音即可
运行游戏后当我们按下相应的按键即可触发声音,但是一进游戏还没按就有声音
在这里插入图片描述
只需要将这个取消即可

混音器可以在音频信号传送给接收者前进行一次加工,但是我们要对混音器里的音乐进行分类才能使得其更加井然有序

9.3 声音特效

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
快照可以用来保存不同场景中 各种类型的参数的设置

在这里插入图片描述
在unity中实现

我们创建一个混音器 然后在其groups下面创建两个子group
然后为其一个音乐添加上output 设定为music(刚刚创建的子group
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
事实上,场景中有多个声音源的话,尽可能把他们放到同一个group,这样的话效率比较高

send:输入到group里面的声音源经过处理之后就会输出出来

然后为其music添加Send 为sfxmusic添加receive
在这里插入图片描述
然后我们还要在send这里选择send的对象是sfxmusic

在这里插入图片描述
这里就可以调整send的程度

在这里插入图片描述
我们还可以为其添加一个sfx reverb 混响的效果。

混响可以用来模拟空旷场地的混响效果

我们可以通过调整 SFX Reverb的效果来模拟不同场景下的空旷的效果

在这里插入图片描述
声音特效的顺序很关键,首先是Receive 这个music group的信号,然后再处理reverb这个声音特效

在这里插入图片描述
如果按下B则会忽略这个group的所有声音效果

在这里插入图片描述

echo代表回声效果 也就是声音遇到障碍物之后回弹的效果

其实回声的效果也有依赖于receive
我们可以把回声的处理receive到另外一个group来执行,然后放到echo之前


master里面的音量可以开放出来交由脚本来控制:在Volume选择右键

在这里插入图片描述

之后我们可以在这里看到在这里插入图片描述
我们接下来通过脚本来获得这个参数并修改:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
public class NewBehaviourScript : 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);
        }
    }
}

然后我们创建一个空物体,为其添加上这个脚本,并将我们想控制的混音器设置为组件,运行游戏后可以发现让我们按下键盘的↑键时音量增大,↓键时音量减小。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值