游戏强调音频是有原因的;为游戏增添美学价值至关重要.从第一个乒乓球开始,人们可以听到嗡嗡声和球从球击中桨的交替出现.当时这是一个非常简单的短方波样本,但你还能从所有电子游戏的祖父那里得到什么?
在现实生活中,很多事情会影响你感知声音的方式;对象的速度,它所处的场景类型以及它来自哪个方向.
有许多因素会对我们的引擎造成不必要的负担.相反,我们试图创造一个关于我们的声音如何在我们的游戏中发挥作用的想法,并围绕它进行构建.这在3D游戏中变得尤为突出,其中有3个轴可以处理.
在Unity中,我们有专门的音频感知和回放组件.这些组件共同构成一个可信的音响系统,让游戏感觉自然.
Unity为我们提供了一系列有用的工具和效果,如混响,多普勒效果,实时混音我们将在后续章节中了解这些内容.
音频组件
在本节中,我们将了解3与Unity中的音频相关的主要组件.
AudioSource
AudioSource组件是您将附加到GameObject以使其播放声音的主要组件.它会在通过混音器,通过代码或默认情况下在唤醒时播放 AudioClip .
AudioClip只是一个加载的声音文件进入AudioSource.它可以是任何标准音频文件,例如.mp3,.wav等. AudioClip本身也是一个组件.
AudioListener
AudioListener是侦听到场景中播放的所有音频的组件,并将其传输到计算机的扬声器.它就像游戏的耳朵.您听到的所有音频都是对此AudioListener定位的透视.一个场景中只应有一个AudioListener才能正常运行.默认情况下,主摄像头连接了监听器.监听器没有设计者想要关注的任何暴露属性.
音频滤波器
可以借助音频滤波器修改AudioSource的输出或AudioListener的输入.这些是可以改变混响,合唱,过滤等的特定组件.每个特定的过滤器都有自己的组件,带有暴露值以调整它的声音.
播放声音
让我们尝试制作一个在点击时播放声音的按钮.首先,我们将创建圆形精灵,并将其设为红色.
现在,让我们将音频源附加到此精灵.
对于播放声音的对象,我们必须给它一个.让我们将此声音效果用于我们的目的.
http://www.orangefreesounds.com/ding-sfx/
下载音效,并将其拖入资产.
当Unity将此资源导入为声音文件时,它会自动转换为 AudioClip .因此,您可以将此声音片段从Assets直接拖动到我们的精灵音频源中的音频片段插槽.
将声音片段从Assets直接拖到我们精灵的音频源中的音频片段插槽后,请记住在音频源属性中取消选择"在唤醒时播放";不这样做会使声音在游戏开始时播放.
现在,让我们跳转到我们的代码中.创建一个名为"BellSound"的新脚本并将其打开.
由于我们的音频源是通过代码控制的,我们希望首先获得它的引用.我们将像以前一样使用GetComponent方法.
public class BellSound : MonoBehaviour { AudioSource mySource; // Use this for initialization void Start () { mySource = GetComponent();}
现在,让我们设置方法来检测被点击的对象. MonoBehaviour为我们提供了我们需要的方法,命名为OnMouseDown.只要鼠标在该游戏对象的对撞机的范围内点击,就会调用该方法.
由于我们还没有将碰撞器附加到我们的按钮,让我们现在这样做.
我们不需要这个刚体;我们也不需要通过代码访问此对撞机.它只需要在那里工作.
让我们测试方法并查看它是否正常工作.在脚本中编写以下代码,并将其附加到按钮.
void OnMouseDown() { Debug.Log("Clicked!");}
保存脚本并附加后,玩游戏.单击按钮应在控制台中生成一条消息.
你现在离播放声音只有一步之遥.您现在要做的就是调用Audio Source实例中的 Play 方法.
void OnMouseDown() { mySource.Play();}
保存您的脚本,并在游戏中运行它.点击按钮,您应该听到声音播放!
注意 : 每次点击它时,请考虑制作一个按钮.使用 mySource.pitch 和一个计数器,看看你是否能搞清楚.)