声音系统 Audio Source

目前正跟随官网 Junior Programmer 课程学习。

前一段时间学习到的一些内容,将分别纪要。

1.声音系统

Junior Programmer 课程的第 3.4 章节左右,开始学习 Unity 的声音系统。

附着于游戏对象之上的 声音系统, 是通过叫做 Audio ListernerAudio Source 的组件来实现的。

Audio listerner

其中,Audio Listerner 组件让我们听到声音;而 Audio Source 组件则负责管理播放的声音资源。

在课程中,我们在 Audio Source 组件上,设置:

  • 拖放 BGM 声音资源文件至 AudioClip
  • 令 BGM 在游戏开始时自动播放,即 Play On Awake 复选框勾选;
  • 令 BGM 循环播放,即 Loop 复选框勾选;
  • 调整 BGM 音量,即 Volume 滑块调整至 0.6 ;

随后我们使用代码来控制 音效 播放;

2.声音系统调用

顺序是:

  • 首先声明一个音效资源变量、将其与对应的声音资源关联;
  • 随后获取相应的 Audio Source 组件;记得要给对应的 游戏对象 添加 Audio Source 组件;
  • 最后,在需要播放声音时,用 PlayOneShot() 方法播放声音;

示意如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
//声明一个 Audio Source 类 变量 playerAudio
private AudioSource playerAudio;
//声明一个 Audio Clip 类变量 crushSound,随后在 Inspector 窗口配置相应的声音文件
[SerializeField] private AudioClip crushSound;

void Start()
{
//获取此游戏对象的 AUdio Source 组件赋值给 playerAudio
playerAudio = GetComponent<AudioSource>();
}

private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("obstacle"))
{
//播放声音
playerAudio.PlayOneShot(crushSound, 1.0f);
}

}
}

以上。

3.深入了解

以下是 Unity Document 中对 AudioSource 的描述。

AudioSource 是音频源在 3D 中的表示。

AudioSource 附加到 GameObject,用于在 3D 环境中播放声音。 要播放 3D 声音,您还需要一个 AudioListener。 音频监听器通常附加到您要使用的摄像机。 声音以 3D 还是 2D 方式播放由 AudioImporter 设置决定。

您可以使用 PlayPauseStop 播放单个音频剪辑。 也可以使用 volume 属性在播放时调整其音量,或使用 time 进行搜寻。 使用 PlayOneShot 可以在一个 AudioSource 上播放多个声音。 使用 PlayClipAtPoint 可以在 3D 空间中的某个静态位置播放剪辑。

另请参阅:AudioListenerAudioClipAudioSource 组件

3.1 常用变量

常用变量说明如下:

变量 说明
clip 要播放的默认 AudioClip。
isPlaying 当前正在播放该 clip 吗?(只读)
loop 是否循环播放该音频剪辑?
maxDistance (对数衰减)MaxDistance 为声音停止衰减的距离。
minDistance 在最小距离内,AudioSource 将停止增大音量。
mute 使 AudioSource 静音/取消静音。静音时将音量设置为 0,取消静音则恢复原来的音量。
pitch 音频源的音高。
playOnAwake 如果设置为 true,音频源将在唤醒时自动开始播放。
priority 设置 AudioSource 的优先级。
time 播放位置(以秒为单位)。
volume 音频源的音量(0.0 到 1.0)。

有大量删减;

3.2 常用函数

以下:

公共函数 说明
Pause 暂停播放 clip。
Play 播放 clip。
PlayDelayed 按照指定的延时(以秒为单位)播放 clip。建议用户使用该函数代替旧的 Play(delay) 函数,Play(delay) 函数接受以样本(参考采样率为 44.1 kHz)数为单位指定的延时作为参数。
PlayOneShot 播放 AudioClip,并根据 volumeScale 调整 AudioSource 音量。
PlayScheduled 在 AudioSettings.dspTime 读取的绝对时间轴上的特定时间播放 clip。
Stop 停止播放 clip。
UnPause 恢复播放该 AudioSource。

有大量删减;

3.3 静态函数

静态函数只有1个,以下:

函数 说明
PlayClipAtPoint 在世界空间中的给定位置播放 AudioClip。

3.4 继承成员

暂略。

在 Unity Document 中对 AudioSource 的描述比较少,但有大量类成员说明,此处并未涉及。

详细了解可参考以下路径:

以上。