Unity的声音 —— AudioSource 和 AudioListener

Unity的声音 —— AudioSource 和 AudioListener

AudioSource

AudioSourceUnity 中的 Audio 组件,其主要用来播放游戏场景中的 AudioClipAudioClip 就是导入到 Unity 中的声音文件。Unity 可导入的音频文件格式有 .aif.wav.mp3.ogg。此外,Audio Source 还可以设置一些播放声音的效果,增强游戏场景中的声音效果。
Unity的声音 —— AudioSource 和 AudioListener_第1张图片

AudioListener

AudioListener 是游戏中的声音接收器,一般位于 Main Camera 游戏对象上,它可以接收游戏中的所有音乐和音效(只要其所附加的游戏物体在音效的影响范围内),此外,每一个 Scene 中仅有一个 Audio Listener
Unity的声音 —— AudioSource 和 AudioListener_第2张图片

应用示例

接下来制作一个小 Demo 来展示下这两个组件的简单用法。

获取声音资源

首先从网上下载一段 .wav 格式声音文件,然后将其导入到新建的Unity项目中自己创建的 AudioClips 文件夹中,将其命名为 Bgmusic。在 Assets 面板中单击选中 Bgmusic 文件可以在 Inspector 面板中查看其相关的设置,并且在 Inspector 面板的最下方可预览声音文件。
Unity的声音 —— AudioSource 和 AudioListener_第3张图片

添加AudioSource组件

在游戏场景中新建一个 GameObject 并将其命名为 AudioSourceObj,然后为其添加 AudioSource 组件,添加路径:首先选中 AudioSourceObj 游戏对象,然后在 Inspector 面板下方点击 Add Component -> Audio -> Audio Source

设置AudioSource组件

Assets/AudioClips 文件夹下的 Bgmusic 声音文件通过拖拽的方式赋值为 AudioSource 组件的 AudioClip 属性。然后取消 Play On Awake 属性(在场景加载后播放 AudioClip)的勾选,其他属性保持默认设置。
Unity的声音 —— AudioSource 和 AudioListener_第4张图片

设置UI布局

添加三个 Button 对象和一个 Text 对象,分别命名为 ButtonPlay、ButtonStop、ButtonMute,DisplayText。其具体作用为:

  • ButtonPlay:点击播放音乐。
  • ButtonStop:点击停止播放音乐。
  • ButtonMute:点击处于静音状态,ButtonStop、ButtonStop 按钮处于禁用状态,再次点击开启静音并恢复点击前的状态。
  • DisplayText:用于展示当前状态。
    Unity的声音 —— AudioSource 和 AudioListener_第5张图片
编写脚本

新建一个 SoundPlayer 脚本并将其添加到 AudioSourceObj 游戏对象上,然后在Visual Studio 中进行编辑。
首先加入 UI 的名称空间。然后定义相关变量并在 Start 方法中获取其值。
Unity的声音 —— AudioSource 和 AudioListener_第6张图片
编写用于 ButtonPlay 按钮点击事件的 playAudio 方法。
Unity的声音 —— AudioSource 和 AudioListener_第7张图片
编写用于 ButtonStop 按钮点击事件的 stopAudio 方法。
Unity的声音 —— AudioSource 和 AudioListener_第8张图片
编写用于 ButtonMute 按钮点击事件的 muteAudio 方法。
Unity的声音 —— AudioSource 和 AudioListener_第9张图片
最后,在 Update 方法中实时对按钮们的状态进行界面化显示。
Unity的声音 —— AudioSource 和 AudioListener_第10张图片

结束语

其实AudioSourceAudioListener 在游戏场景中的关系就是:一个用于播放声音,一个用于听(listen)声音,一个场景中只有一个 AudioListener 也很好理解,因为对于游戏来说一个客户端只针对一个玩家,所以一个玩家拥有一个 Listener 才符合实际。但是声音可以是多种多样的,所以 AudioSource 组件上可以有多个并且可设置声音的相关属性。

你可能感兴趣的:(游戏开发-Unity)