此页面仅提供有关 Web 平台音频功能的信息。要了解如何在 Unity 项目中使用音频,请参阅音频概述。
由于 Unity 使用FMODUnity 中的音频构建在名为 FMOD 的中间件之上。FMOD 与 Unity 引擎集成,用于创建和回放交互式音频。
请参阅术语表来管理平台的音频,因此 Web 平台支持有限的音频功能,仅包括基本功能。FMOD 依赖于线程,而WebGL一个 JavaScript API,用于在 Web 浏览器中渲染 2D 和 3D 图形。Unity Web 构建选项允许 Unity 将内容发布为 JavaScript 程序,这些程序使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。更多信息
请参阅术语表API 不支持。因此,Unity 使用基于内部 Web Audio API 的实现,使浏览器能够处理音频播放和混音。
注意:Google Chrome 的新自动播放策略在某些情况下会阻止音频和视频的自动播放。例如,虽然您的游戏可能设置为在游戏加载后不久自动播放一些背景音乐,但除非您单击或点击网站,否则它不会自动播放。有关如何启用或禁用此策略的更多信息,请参阅 Google Chrome 有关Chrome 中自动播放策略的文档。
Unity Web 支持以下 API 类
类 | WebGL 支持状态 |
---|---|
AudioSource | WebGL 支持某些 API。有关特定支持详细信息,请参阅AudioSource。 |
AudioListener | 所有 API 均受支持。 |
AudioClip | WebGL 支持某些 API。有关特定支持详细信息,请参阅AudioClip。 |
AudioMixer | WebGL 支持某些 API。有关特定支持详细信息,请参阅音频混音器。 |
SystemInfo.supportsAudio | 浏览器为 WebGL 提供音频支持。因此,SystemInfo.supportsAudio 始终为 true。 |
Microphone | 不支持。 |
AudioSource API 支持基本的定位音频播放,包括
Unity WebGL 支持以下 AudioSource API
设置 | 描述 |
---|---|
Clip | 确定接下来播放的音频剪辑Unity 中音频数据的容器。Unity 支持单声道、立体声和多声道音频资产(最多八个声道)。Unity 可以导入 .aif、.wav、.mp3 和 .ogg 音频文件格式,以及 .xm、.mod、.it 和 .s3m 跟踪模块格式。更多信息 请参阅术语表。 |
dopplerLevel | 设置 AudioSource 的多普勒比例。 |
ignoreListenerPause | 允许 AudioSource 忽略 AudioListener.pause 并继续播放音频。 |
ignoreListenerVolume | 忽略最终用户的 AudioSource 音量。 |
isPlaying | 如果 AudioSource.clip 正在播放,则返回 true。 |
loop | 允许应用程序循环播放 AudioSource.clip 。 |
maxDistance | 设置 AudioSource.clip 停止衰减或变得无法听到的最大距离。 |
minDistance | 设置 AudioSource.clip 音量不再升高的最小距离。声音开始在最小距离之外衰减。 |
mute | 静音 AudioSource。 |
pitch | 设置 AudioSource.clip 的音调。WebGL 仅支持正音调值。 |
playOnAwake | 在 Awake 时播放 AudioSource。 |
rolloffMode | 设置 AudioSource 随距离衰减。 |
time | 以秒为单位设置播放位置。 |
timeSamples | 以脉冲编码调制 (PCM) 样本为单位设置播放位置。 |
velocityUpdateMode | 设置 AudioSource 是否在固定或动态更新循环中更新。 |
volume | 设置 AudioSource 的音量(0.0 到 1.0)。 |
Pause | 暂停 AudioSource.clip 。 |
Play | 播放 AudioSource.clip 。 |
PlayDelayed | 以您指定的秒数延迟播放 AudioSource.clip 。 |
PlayOneShot | 播放AudioClip 并按 volumeScale 缩放 AudioSource 音量。 |
PlayScheduled | 在您指定的时间播放 AudioSource。 |
SetScheduledEndTime | 设置计划的 AudioSource.clip 结束的时间。 |
SetScheduledStartTime | 设置计划的 AudioSource.clip 开始的时间。 |
Stop | 停止播放 AudioSource.clip 。 |
UnPause | 取消暂停已暂停的 AudioSource.clip 。 |
PlayClipAtPoint | 在世界空间中的给定位置播放 AudioSource.clip 。 |
Unity WebGL 以 AAC 格式导入AudioClip 文件,大多数浏览器都支持该格式。Unity WebGL 支持以下 AudioClip API
属性 | 描述 |
---|---|
length | AudioClip 的长度(以秒为单位)。 |
loadState | 返回与 AudioClip 关联的音频数据的当前加载状态。 |
samples | AudioClip 的长度(以样本为单位)。 |
loadType | 剪辑的加载类型。您可以在检查器一个 Unity 窗口,显示有关当前选定的 GameObject、资产或项目设置的信息,允许您检查和编辑值。更多信息 请参阅术语表中设置 AudioClip 加载类型。 |
方法 | 描述 | 其他信息 |
---|---|---|
AudioClip.Create | 创建具有您指定名称和长度的 AudioClip。 | Unity WebGL 部分支持 AudioClip.Create 。浏览器不支持动态流式传输,因此要使用 AudioClip.Create ,请将 Stream 设置为 false。 |
AudioClip.SetData | 在 AudioSource.clip 中设置样本数据。 | Unity WebGL 部分支持 AudioClip.SetData 。您只能对压缩音频文件使用此方法,并且加载类型设置为加载时解压缩。请参阅压缩音频。 |
AudioClip.GetData | 检索包含 AudioSource.clip 中样本数据的数组。 | Unity WebGL 部分支持 AudioClip.GetData 。您只能对压缩音频文件使用此方法,并且加载类型设置为加载时解压缩。请参阅压缩音频。 |
注意:有关 Linux 上的音频剪辑支持,请确保您已安装ffmpeg软件包。
Unity Web 支持音频混音器资产的一些功能。
您可以在 Web 上使用音频混音器执行以下操作
注意:音量是您可以在 Web 上更改的唯一属性。其他属性和声音效果不受支持。
要在 Unity 中将压缩音频与 WebGL 一起使用,请将 AudioCliploadType 设置为以下选项之一
压缩一种存储数据的方法,可减少其所需的存储空间。请参阅纹理压缩、动画压缩、音频压缩、构建压缩。 请参阅术语表方法 |
描述 | 注意事项 |
---|---|---|
CompressedInMemory | 使用此方法压缩磁盘上的音频,并在其加载到应用程序内存后保持压缩状态。 | 压缩音频可能会导致延迟,并且在音频播放方面不太精确。但是,与未压缩音频相比,压缩音频在应用程序中使用的内存更少。最佳做法是将 CompressedInMemory 用于不受精度影响的音频,例如背景音乐。 |
DecompressOnLoad | 使用此方法压缩磁盘上的音频,类似于 CompressedInMemory,并在其加载到应用程序内存时解压缩。 | 与压缩音频相比,解压缩音频使用大量内存,但延迟较低,并且音频灵活性更高。对于受精度影响的音频(例如角色对话或音效),请使用 DecompressedOnLoad 。 |
出于安全原因,浏览器不允许音频播放,直到最终用户通过鼠标点击、触摸事件或按键与您的应用程序网页交互。使用加载屏幕允许最终用户与您的应用程序交互并在主要内容开始之前启动音频播放。