第五十六章 Unity 音频播放

这篇具有很好参考价值的文章主要介绍了第五十六章 Unity 音频播放。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity可以导入大多数标准音频文件格式,精通于在3D 空间中播放声音,还可根据需要提供其他效果。虽然播放声音是一件非常简单的事情,但是为了模拟现实直接中的各种声音效果,Unity会提供各种各样的组件来实现。

首先,我们需要了解“多普勒效应”。他是一名奥地物理学家多普勒发现的一种声音现象。当火车从远而近时汽笛声变大,但波长变短,而火车从近而远时汽笛声变小,但波长变长。这是由于发声源(波源)与收听者之间存在着相对运动。在现实中,声源和收听者的位置移动是非常普遍的。

Unity为了模拟“多普勒效应”,就需要模拟“声源”和“收听者”这两个能够移动的角色。很明显,这两个角色在场景中都应该是游戏对象,因为只有游戏对象才可以进行位置移动变化。但是,最终这个效果还是需要通过控件来实现的。Unity要求“声源” 来自附加到游戏对象的音频源 (Audio Source)组件,发出的声音由附加到另一个游戏对象(通常是主摄像机)上的音频监听器 (Audio Listener)组件获取。然后就可以利用两个游戏对象之间的距离和位置的影响,播放声音给最终用户听。此外还使用音频源对象和音频监听器对象的相对速度来模拟多普勒效应以增加真实感。注意,音频源对象可以是多个,但音频监听器只有一个。

此外,周围环境也会影响声音的反射方式,因此洞穴内的声音会产生回声,但相同的声音在露天环境中却不会产生回声。Unity 无法仅根据场景几何体来计算回声,但您可以通过向对象添加音频回声滤波器 (Audio Echo Filter)组件来模拟回声。Unity提供了很多音频滤波器来实现各种各样的效果。如下所示:

1.音频低通滤波器 (Audio Low Pass Filter)

2.音频高通滤波器 (Audio High Pass Filter)

3.音频回声滤波器 (Audio Echo Filter)

4.音频失真滤波器 (Audio Distortion Filter)

5.音频混响滤波器 (Audio Reverb Filter)

6.音频合声滤波器 (Audio Chorus Filter)

接下来,我们使用案例来介绍如何播放声音。unity支持的音乐文件格式有很多,一般背景音乐建议使用.mp3与.ogg,而音效则可以使用.aiff。Unity官方推荐,对于较短的音乐可以使用未经压缩的wav,aiff格式。对于较长的音乐,建议使用压缩的ogg voris, mp3格式。播放声音涉及到的音频源 (Audio Source)组件和音频监听器 (Audio Listener)组件。

我们首先创建一个新的“SampleScene2.unity”场景。接下来,我们就创建一个空游戏对象,菜单栏点击“GameObject”->“Create Empty”来创建。空对象在Scene场景中是看不到的。

unity 音频播放,Unity基础,unity,unity基础,unity入门,unity教程

一个空游戏对象只有“Transform”组件,我们给这个空物体添加Audio Source组件。

unity 音频播放,Unity基础,unity,unity基础,unity入门,unity教程

添加Audio Source组件后,我们就可以在Scene场景中看到一个小喇叭的物体。我们再来查看它的Inspector检视面板,如下所示

unity 音频播放,Unity基础,unity,unity基础,unity入门,unity教程

音频源 (Audio Source) 组件在场景中播放音频剪辑。剪辑的音源可通过音频监听器或者混音器播放。音频源可播放任何类型的音频剪辑,可设置以 2D、3D 或混合模式播放。音频可在扬声器之间扩散,并在 3D 和 2D 之间变换。可通衰减曲线控制传播距离。此外,如果监听器位于一个或多个混响区内,则会将混响应用于音频源。可对每个音频源应用单独的滤波器,以获得更丰富的音频体验。接下来,我们就来介绍这个组件的常用属性。

Audio Clip 参考将要播放的声音剪辑文件。我们可以直接将音频文件拖拽到该选项。

Output默认情况下,剪辑将直接输出到场景中的音频监听器 (Audio Listener)。使用此属性可以更改为将剪辑输出到混音器 (Audio Mixer)。

Mute如果启用此选项,则为静音。默认不开启此项。

Bypass Effects 启用/停用音频源的滤波器效果。默认启用。

Bypass Listener Effects  启用/停用所有监听器。默认启用。

Bypass Reverb Zones 启用/停用所有混响区。默认启用。

Play On Awake 如果启用此选项,声音将在场景启动时开始播放。如果禁用此选项,需要通过脚本使用 Play() 命令启用播放。

Loop 是否循环播放。默认不循环播放,也就是只播放一次。

Priority  从场景中存在的所有音频源中确定此音频源的优先级。(Priority值为0 表示优先级最高。值为256, 表示优先级最低。默认值为 128)。

Volume 声音的大小与音频监听器的距离成正比,以米为世界单位。

Pitch 由于音频剪辑的减速/加速导致的音高变化量。值 1 表示正常播放速度。

Stereo Pan 设置 2D 声音的立体声位置。

Spatial Blend 设置 3D 引擎对音频源的影响程度。

Reverb Zone Mix 设置路由到混响区的输出信号量。

3D Sound Settings 3D声音的设置

unity 音频播放,Unity基础,unity,unity基础,unity入门,unity教程

Doppler Level 确定将对此音频源应用多普勒效果的程度,0表示不使用。

Spread 在发声空间中将扩散角度设置为 3D 立体声或多声道。

Volume Rolloff 声音衰减的方式。Logarithmic Rolloff    靠近音频源时,声音很大,但离开对象时,声音降低得非常快。

Min Distance  在 MinDistance 内,声音将保持可能的最大响度。在 MinDistance 之外,声音将开始减弱。

Max Distance  声音停止衰减的距离。超过此距离之后,声音将保持与监听器之间距离 MaxDistance 单位时的音量,不再衰减。

接下来,我们将一个音频文件“night.mp3”放入到Asset目录下,音频记录夜晚虫鸣的背景声音。当然,我们还提供了其他的一些声音文件。

unity 音频播放,Unity基础,unity,unity基础,unity入门,unity教程

然后,我们需要将这个“night.mp3”文件拖拽到Audio Source组件的Audio Clip选项上。

unity 音频播放,Unity基础,unity,unity基础,unity入门,unity教程

接下来,我们就需要添加音频监听器 (Audio Listener)组件。默认情况下,我们的“Main Camera”主相机游戏对象上面自动会添加该组件。

unity 音频播放,Unity基础,unity,unity基础,unity入门,unity教程

音频监听器 (Audio Listener) 充当类似于麦克风的设备。它接收来自场景中任何给定音频源的输入,并通过计算机扬声器播放声音。对于大多数应用程序,最有意义的是将监听器附加到主摄像机。音频监听器没有属性。但必须添加音频监听器才能工作。默认情况下,音频监听器将被添加到主摄像机。请注意,每个场景只能有 1 个音频监听器才能正常工作。接下来,我们运行整个工程,查看是否有声音。由于截图无法展示声音,所以我们就不展示了。

备注:AudioSource和 Audio Listener都可以使用play方法播放声音。AudioSource控制的是场景中一个声音文件的播放,而Audio Listener则可以控制场景中所有声音的播放。毕竟在一个场景中,可以存在多个AudioSource组件,但是只有一个Audio Listener组件。

本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id文章来源地址https://www.toymoban.com/news/detail-729425.html

到了这里,关于第五十六章 Unity 音频播放的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第四十六章 Unity 布局(上)

    学习了UI元素的使用,并不能构建出一个完整的UI界面,我们需要使用一些方法将这些UI元素按照“设计稿”的效果,将其摆放到对应的位置上。如何摆放这些UI元素,就是我们需要讲的“布局”,当然这需要借助一些布局组件来完成。我们知道在画布Canvas下的每个UI元素都会自

    2024年02月03日
    浏览(24)
  • 第五十一章 Unity Input Manager 输入系统(下)

    本章节我们就来使用水平轴和垂直轴来控制游戏物体的移动和旋转。我们之前大致讲过,游戏物体移动最重要的是方向,速度和时间三个要素,同样旋转也是。接下来,我们将之前创建的地形场景导入进来,如下所示 然后将之前的“MecanimDemo”工程里面的模型文件和动画文件

    2024年02月03日
    浏览(32)
  • 第五十二章 Unity Input System 新输入系统

    新输入系统InputSystem是2019年Unity新推出的插件。请注意,Unity默认使用旧的Input Manager,新的Input System处于未启用状态。当你安装Input System组件时,Unity会询问你是否启用新的输入系统。如果你选择Yes,Unity会启用新的并禁用旧的,之后编辑器将重新启动。具体的操作是,打开包

    2024年02月07日
    浏览(26)
  • 第十六章 Unity 预制件prefab(上)

    本章节我们介绍一下“预制件”,也有人叫“预制体”,也就是Prefab。在游戏世界中,那些自然环境的游戏对象,我们可以提前创建在场景中,这个大家能够理解。但是,有些游戏对象,需要根据游戏逻辑来通过代码生成,例如刷新怪物,触发机关等等。Unity 的预制件系统允许

    2024年02月08日
    浏览(40)
  • 第二十六章 Unity碰撞体Collision(上)

    在游戏世界中,游戏物体之间的交互都是通过“碰撞接触”来进行交互的。例如,攻击怪物则是主角与怪物的碰撞,触发机关则是主角与机关的碰撞。在DirectX课程中,我们也大致介绍过有关碰撞检测的内容。游戏世界中的3D模型的形状是非常复杂的,我们不可能按照模型的原

    2024年02月04日
    浏览(43)
  • 代码随想录-刷题第五十六天

    先介绍单调栈类型的题目, 通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时就要想到可以用单调栈 。时间复杂度为O(n)。 单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优

    2024年01月17日
    浏览(30)
  • 第五十六回:如何在Button中同时显示文字和图标

    我们在上一章回中介绍了命名路由相关的内容,本章回中将介绍 如何在Button中同时显示文字和图标 .闲话休提,让我们一起Talk Flutter吧。 我们在项目中的使用Button大部分是文字形式的按钮,就是在按钮上面显示文字,通过文字来了解按钮的功能。也有一部分是图标形式的按钮

    2024年02月09日
    浏览(35)
  • 从0开始学前端 第五十六课:React 与服务器通信

    学习目标 本课程将帮助学生掌握以下内容: 了解 Fetch API 与 Axios 库的基础知识及它们在React中的应用。 理解异步操作的概念以及如何在React中使用中间件处理异步逻辑。 学习如何通过Fetch API 和 Axios 实现与RESTful API的交互。 学习内容 1. Fetch API Fetch API 提供了一个获取资源的接

    2024年02月21日
    浏览(24)
  • unity 音频加载并播放

    好久没更新博客了,利用这十分钟来写篇服务器语音识别后播放的语音功能 PC端 直接上代码: 调用: 效果图: WebGL

    2024年02月15日
    浏览(24)
  • 代码随想录第五十六天——两个字符串的删除操作,编辑距离

    题目链接:两个字符串的删除操作 两个字符串可以相互删除 版本一: 确定dp数组及下标的含义 dp[i][j] :以i-1为结尾的字符串word1,和以j-1为结尾的字符串word2,想要达到相等,所需要删除元素的最少次数 确定递推公式 (1)当word1[i - 1] 与 word2[j - 1]相同: (2)当word1[i - 1] 与

    2024年02月02日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包