Web 中的音频
Information about audio capabilities in Web.
阅读时间7 分钟最后更新于 1 个月前
本页面仅提供有关 Web 平台中的音频功能的信息。要了解如何在 Unity 项目中使用音频,请参阅音频概述。
因为 Unity 通常使用 FMOD 管理平台的音频,所以 Web 平台的音频功能有限,仅支持基本功能。FMOD 依赖于线程,而 WebGL API 不支持这些线程。由于这个原因,Unity 使用了一个基于内部 Web 音频 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 提供音频支持。因此, |
| Microphone | 不支持。 |
AudioSource
AudioSource API 支持基本位置音频回放,包括:
- 暂停和恢复
- 衰减
- 音高设置
- 多普勒效应支持
Unity WebGL 支持以下 AudioSource API:
设置 | 描述 |
|---|---|
| Clip | 确定下一个播放的音频剪辑。 |
| dopplerLevel | 设置该 AudioSource 的多普勒缩放。 |
| ignoreListenerPause | 运行 AudioSource 忽略 |
| ignoreListenerVolume | 忽略终端用户的 AudioSource 音量。 |
| isPlaying | 如果 |
| loop | 允许应用程序循环播放 |
| maxDistance | 设置 |
| minDistance | 设置 AudioSource.clip 音量不再增大的最小距离。超过最小距离,音量开始衰减。 |
| mute | AudioSource 静音。 |
| pitch | 设置 |
| playOnAwake | 唤醒时播放 AudioSource。 |
| rolloffMode | 设置 AudioSource 随距离衰减。 |
| time | 设置播放位置(以秒为单位)。 |
| timeSamples | 设置脉冲编码调制 (PCM) 样本中的播放位置。 |
| velocityUpdateMode | 设置以固定还是动态循环方式更新 AudioSource。 |
| volume | 设置 AudioSource 的音量(0.0 到 1.0)。 |
| Pause | 暂停 |
| Play | 播放 |
| PlayDelayed | 以指定的延迟播放 |
| PlayOneShot | 播放 AudioClip,并根据 volumeScale 调整 AudioSource 的音量。 |
| PlayScheduled | 在指定的时间播放 AudioSource。 |
| SetScheduledEndTime | 设置计划的 |
| SetScheduledStartTime | 设置计划的 |
| Stop | 停止播放 |
| UnPause | 取消暂停的 |
| PlayClipAtPoint | 在世界空间中的给定位置播放 |
AudioClip
Unity WebGL 以大多数浏览器支持的 AAC 格式导入 AudioClip 文件。Unity WebGL 支持以下 AudioClip API:
属性 | 描述 |
|---|---|
| length | AudioClip 的长度(以秒为单位)。 |
| loadState | 返回与 AudioClip 关联的音频数据的当前加载状态。 |
| samples | 样本中 AudioClip 的长度。 |
| loadType | 剪辑的加载类型。您可以在检视面板中设置 AudioClip 的加载类型。 |
方法 | 描述 | 其他信息 |
|---|---|---|
| AudioClip.Create | 使用您指定的名称和长度创建一个 AudioClip。 | Unity WebGL 部分支持 |
| AudioClip.SetData | 在 AudioSource.clip. 中设置样本数据。 | Unity WebGL 部分支持 |
| AudioClip.GetData | 从 AudioSource.clip 检索具有样本数据的数组。 | Unity WebGL 部分支持 |
**注意:**要在 Linux 上支持音频剪辑,请确保已安装 ffmpeg 包。
混音器
Unity Web 支持混音器资产的某些功能。
您可以使用 Web 上的混音器执行以下操作:
- 创建混音器资产。
- 将 AudioMixerGroup 添加到层级视图中。
- 调整每个组的音量。要使用脚本显示或更改音量,请使用 AudioMixer.SetFloat。
注意:音量 (Volume) 是唯一可以在 Web 上更改的属性。不支持其他属性和音效。
压缩音频
要在 Unity 中将压缩音频与 WebGL 结合使用,请将 AudioClip loadType 设置为以下选项之一:
压缩方法 | 描述 | 注意事项 |
|---|---|---|
| CompressedInMemory | 使用此属性可以压缩磁盘上的音频,并在加载到应用程序内存中后保持压缩状态。 | 压缩音频可能会导致延迟,并且在音频播放时精度较低。但是,压缩音频在应用程序中使用的内存少于解压缩音频。最佳做法是将 |
| DecompressOnLoad | 使用此属性可以压缩磁盘上的音频,类似于 CompressedInMemory,并在加载到应用程序内存中时解压缩。 | 与压缩音频相比,解压缩音频使用大量内存,但具有更低的延迟和更大的音频灵活性。对受精度影响的音频(例如,角色对话框或音效)使用 |
音频播放和浏览器安全
出于安全考虑,浏览器禁止自动播放音频,直到最终用户通过鼠标点击、触摸事件或按键与应用程序网页进行交互。使用加载屏幕,让最终用户在主内容加载前与应用程序进行交互并启动音频播放。