📜  Unity-音频简介

📅  最后修改于: 2020-10-29 04:21:52             🧑  作者: Mango


游戏强调音频是有原因的。在游戏中增加美学价值是至关重要的。从第一个Pong开始,人们可以听到球交替敲打桨叶发出的哔哔声和嘟嘟声。当时这是一个非常简单的短方波示例,但是您想要从所有视频游戏的祖父那里得到什么呢?

在现实生活中,许多因素都会影响您对声音的感知方式。对象的速度,它所处的场景类型以及所指向的方向。

有很多因素会在我们的引擎上造成不必要的负载。取而代之的是,我们尝试建立一种声音在游戏中的工作方式的想法,并以此为基础。这在3D游戏中尤为突出,因为要处理3个轴。

在Unity中,我们具有用于音频感知和回放的专用组件。这些组件一起工作,可以创建出让人感觉很自然的声音系统。

Unity为我们提供了一系列有用的工具和效果,例如混响,多普勒效果,实时混合和效果等。我们将在后续章节中学习这些工具和效果。

音频组件

在本节中,我们将学习与Unity中的音频相关的3个主要组件。

音源

AudioSource组件是将附加到GameObject使其播放声音的主要组件。通过混音器,通过代码触发或在唤醒时默认情况下,它将播放AudioClip

AudioClip只是加载到AudioSource中的声音文件。它可以是任何标准音频文件,例如.mp3,.wav等。 AudioClip本身也是一个组件。

音源

音频监听器

AudioListener是用于侦听场景中播放的所有音频并将其传输到计算机扬声器的组件。它的行为就像游戏的耳朵。您听到的所有音频都取决于此AudioListener的位置。场景中只有一个AudioListener才能函数运行。默认情况下,主摄像机具有附加的侦听器。侦听器没有设计人员要关心的任何公开属性。

音频听众

音频过滤器

可以在音频过滤器的帮助下修改AudioSource的输出或AudioListener的输入。这些是可以更改混响,合唱,滤波等的特定组件。每个特定的过滤器都作为其自己的组件,具有公开的值以调整其声音。

音频过滤器

播放声音

让我们尝试制作一个在单击时播放声音的按钮。首先,我们将创建一个Circle精灵,并将其设为红色。

创建一个圆精灵按钮

现在,让我们将音频源附加到此精灵。

附加音频源精灵

为了使对象播放声音,我们必须给它一个声音。让我们将这种声音效果用于我们的目的。

http://www.orangefreesounds.com/ding-sfx/

下载声音效果,并将其拖到素材资源中。

音效

当Unity将此资产作为声音文件导入时,它会自动转换为AudioClip 。因此,您可以将此声音剪辑从素材资源直接拖动到精灵的音频源的“音频剪辑”插槽中。

音频剪辑

将声音片段从素材资源直接拖动到精灵的音频源的“音频片段”插槽后,请记住在“音频源”属性中取消选择“唤醒时播放”;不这样做将使声音在游戏开始时立即播放。

醒着玩

现在,让我们进入代码。创建一个名为“ BellSound”的新脚本并将其打开。

钟声

由于我们的音频源是通过代码控制的,因此我们首先要获得对其的引用。我们将像以前一样使用GetComponent方法。

public class BellSound : MonoBehaviour {
   AudioSource mySource;
   // Use this for initialization
   void Start () {
      mySource = GetComponent();
}

现在,让我们设置方法来检测被单击的对象。 MonoBehaviour为我们提供了所需的方法,称为OnMouseDown。每当鼠标在该gameObject的对撞机范围内单击时,都会调用该方法。

由于我们尚未将对撞机附加到按钮上,所以现在让我们这样做。

附加了一个对撞机

我们将不需要一个刚体。我们也不需要通过代码访问此对撞机。它只是必须存在,该方法才能起作用。

让我们测试该方法,看看它是否有效。在脚本中编写以下代码,并将其附加到按钮上。

void OnMouseDown() {
   Debug.Log(“Clicked!”);
}

保存脚本并将其附加后,即可玩游戏。单击该按钮应在控制台中生成一条消息。

产生一条消息

您现在距离播放声音仅一步之遥。您现在要做的就是在“音频源”实例中调用Play方法。

void OnMouseDown() {
   mySource.Play();
}

保存您的脚本,然后在游戏中运行它。单击该按钮,您应该会听到声音播放!

注意-考虑制作一个每次单击时音调都会升高的按钮。使用mySource.pitch和一个计数器,看看是否可以解决。)