Unity - 音频简介

  • 简述

    游戏强调音频是有原因的。为游戏增加审美价值非常重要。从一开始Pong,人们可以听到球交替撞击桨的哔哔声。这在当时是一个非常简单的短方波样本,但你还能从所有电子游戏的祖父那里得到什么?
    在现实生活中,很多事情都会影响您感知声音的方式。物体的速度,它所处的场景类型,以及它来自什么方向。
    有许多因素会在我们的引擎上造成不必要的负载。相反,我们尝试创建一个关于我们的声音在我们的游戏中如何工作的想法,并围绕它进行构建。这在需要处理 3 个轴的 3D 游戏中尤为突出。
    在 Unity 中,我们有专用的音频感知和播放组件。这些组件协同工作,创造出令人信服的声音系统,让游戏感觉自然。
    Unity 为我们提供了一系列有用的工具和效果,例如混响、多普勒效果、实时混音和效果等。我们将在后续章节中了解这些内容。
  • 音频组件

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

    音频源

    AudioSource 组件是您将附加到 GameObject 以使其播放声音的主要组件。它会播放一个AudioClip当通过混音器触发时,通过代码或默认情况下,当它唤醒时。
    AudioClip 只是一个加载到 AudioSource 中的声音文件。它可以是任何标准的音频文件,例如 .mp3、.wav 等。AudioClip 本身也是一个组件。
    音频源

    音频监听器

    AudioListener 是一个组件listens到场景中播放的所有音频,并将其传输到计算机的扬声器。它的作用就像ears的游戏。您听到的所有音频都与此 AudioListener 的位置有关。场景中应该只有一个 AudioListener 才能正常工作。默认情况下,主摄像头附加了侦听器。Listener 没有任何设计者想要关心的公开属性。
    音频监听器

    音频过滤器

    AudioSource 的输出或 AudioListener 的输入可以在 Audio Filters 的帮助下进行修改。这些是可以改变混响、合唱、过滤等的特定组件。每个特定的过滤器都作为其自己的组件提供,并带有公开的值来调整它的声音。
    音频过滤器
  • 播放声音

    让我们尝试制作一个在单击时播放声音的按钮。首先,我们将Create一个圆形精灵,并将其设为红色。
    创建圆形精灵按钮
    现在,让我们附上一个Audio Source到这个精灵。
    附加音频源精灵
    为了让对象播放声音,我们必须给它一个声音。让我们将这个音效用于我们的目的。
    下载音效,并将其拖到资产中。
    音效
    当 Unity 将此资源作为声音文件导入时,它会自动转换为AudioClip. 因此,您可以将这个声音剪辑从资产直接拖到我们精灵的音频源中的音频剪辑插槽中。
    音频剪辑
    将声音剪辑从资产直接拖到精灵音频源中的音频剪辑插槽后,请记住在音频源属性中取消选择“Play on Awake”;不这样做会使声音在游戏开始时播放。
    醒着玩
    现在,让我们进入我们的代码。创建一个名为“BellSound”的新脚本并将其打开。
    钟声
    由于我们的 Audio Source 是通过代码控制的,所以我们首先要获得对它的引用。我们将像以前一样使用 GetComponent 方法。
    
    public class BellSound : MonoBehaviour {
       AudioSource mySource;
       // Use this for initialization
       void Start () {
          mySource = GetComponent<AudioSource>();
    }
    
    现在,让我们设置方法来检测被点击的对象。MonoBehaviour 为我们提供了我们需要的方法,名为 OnMouseDown。每当鼠标在范围内单击时调用该方法collider那个游戏对象。
    由于我们还没有将碰撞器附加到我们的按钮上,现在让我们这样做。
    附上一个对撞机
    我们不需要这个刚体;我们也不需要通过代码访问这个碰撞器。它必须在那里才能使方法起作用。
    让我们测试该方法,看看它是否有效。在您的脚本中编写以下代码,并将其附加到按钮上。
    
    void OnMouseDown() {
       Debug.Log(“Clicked!”);
    }
    
    保存脚本并附加它后,就可以玩游戏了。单击该按钮应在控制台中生成一条消息。
    产生一条消息
    您现在离播放声音只有一步之遥。你现在要做的就是打电话给PlayAudio Source 实例中的方法。
    
    void OnMouseDown() {
       mySource.Play();
    }
    
    保存您的脚本,然后在游戏中运行它。单击按钮,您应该会听到声音播放!
    注意- 考虑制作一个每次点击时音调都会上升的按钮。利用mySource.pitch和一个柜台,看看你能不能弄清楚。)