- Unity 教程
- Unity - 首页
- Unity - 简介
- Unity - 安装和设置
- Unity - 创建精灵
- Unity - 修改精灵
- 变换和对象父子关系
- Unity - 内部资源
- Unity - 保存和加载场景
- Unity - 基本移动脚本
- Unity - 理解碰撞
- Unity - 刚体和物理
- Unity - 自定义碰撞边界
- 理解预制体和实例化
- Unity - 游戏对象销毁
- Unity - 协程
- Unity - 控制台
- Unity 音频入门
- Unity - UI 入门
- Unity - 按钮
- Unity - 文本元素
- Unity - 滑块
- Unity - 材质和着色器
- Unity - 粒子系统
- Unity - 使用资源商店
- Unity 有用资源
- Unity - 快速指南
- Unity - 有用资源
- Unity - 讨论
Unity 音频入门
游戏强调音频是有原因的;它对于增加游戏的审美价值至关重要。从最早的Pong开始,人们就能听到球轮流击打球拍发出的哔哔声。当时只是一个非常简单的短正弦波样本,但对于所有电子游戏的鼻祖来说,你还想要什么呢?
在现实生活中,许多因素会影响你感知声音的方式;物体的速度,它所处的场景类型以及它来自哪个方向。
许多因素会导致游戏引擎不必要的负载。相反,我们尝试构思我们的声音在游戏中将如何运作,并以此为基础进行构建。这在 3D 游戏中尤其突出,因为需要处理 3 个轴。
在 Unity 中,我们拥有专用于音频感知和播放的组件。这些组件协同工作,创建逼真的声音系统,让游戏感觉自然。
Unity 为我们提供了许多有用的工具和效果,例如混响、多普勒效应、实时混音和效果等等。我们将在后续章节中学习这些内容。
音频组件
在本节中,我们将学习与 Unity 中的音频相关的三个主要组件。
AudioSource (音频源)
AudioSource 组件是您附加到游戏对象以使其播放声音的主要组件。它会在通过混音器、通过代码或默认情况下在唤醒时触发时播放AudioClip。
AudioClip 只是一段加载到 AudioSource 中的音频文件。它可以是任何标准音频文件,例如 .mp3、.wav 等等。AudioClip 本身也是一个组件。
AudioListener (音频监听器)
AudioListener 是监听场景中所有正在播放的音频并将音频传输到计算机扬声器的组件。它就像游戏的“耳朵”。你听到的所有音频都取决于此 AudioListener 的位置。场景中只能有一个 AudioListener 才能正常工作。默认情况下,主摄像机已附加了监听器。监听器没有任何设计人员需要关心的公开属性。
音频滤镜
可以使用音频滤镜修改 AudioSource 的输出或 AudioListener 的输入。这些是特定组件,可以更改混响、合唱、过滤等等。每个特定的滤镜都作为其自身的组件提供,具有公开值以调整其声音。
播放声音
让我们尝试创建一个点击时播放声音的按钮。首先,我们将创建一个圆形精灵并将其设置为红色。
现在,让我们将音频源附加到此精灵。
要使对象播放声音,我们必须为其提供一个声音。让我们使用此音效。
http://www.orangefreesounds.com/ding-sfx/
下载音效,并将其拖放到“资源”文件夹中。
当 Unity 将此资源导入为声音文件时,它会自动转换为AudioClip。因此,您可以直接将此音频剪辑从“资源”文件夹拖放到我们精灵的音频源中的“音频剪辑”槽中。
将音频剪辑从“资源”文件夹直接拖放到我们精灵音频源的“音频剪辑”槽中后,请记住取消选中音频源属性中的“在唤醒时播放”;否则,声音会在游戏开始时播放。
现在,让我们进入我们的代码。创建一个名为“BellSound”的新脚本并打开它。
由于我们的音频源通过代码控制,我们首先需要获取对它的引用。我们将像以前一样使用 GetComponent 方法。
public class BellSound : MonoBehaviour { AudioSource mySource; // Use this for initialization void Start () { mySource = GetComponent<AudioSource>(); }
现在,让我们设置方法来检测对象被点击。MonoBehaviour 为我们提供了我们需要的方法,名为 OnMouseDown。每当鼠标点击该 gameObject 的碰撞器范围内时,都会调用此方法。
由于我们尚未将碰撞器附加到我们的按钮,让我们现在这样做。
我们不需要为此使用刚体;我们也不需要通过代码访问此碰撞器。它只需要存在才能使该方法工作。
让我们测试一下该方法是否有效。将以下代码写入您的脚本中,并将其附加到按钮。
void OnMouseDown() { Debug.Log(“Clicked!”); }
保存脚本并附加后,运行游戏。点击按钮应该会在控制台中生成一条消息。
您现在距离播放声音只有一步之遥。您现在只需在 AudioSource 实例中调用Play方法。
void OnMouseDown() { mySource.Play(); }
保存您的脚本,并在游戏中运行它。单击按钮,您应该会听到声音播放!
注意 - 考虑制作一个每次点击时音高都会升高的按钮。使用mySource.pitch和一个计数器,看看你是否能解决这个问题。