文档

Unity Engine

Unity Engine

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 支持状态

AudioSourceWebGL 支持部分 API。有关特定支持详细信息,请参阅 AudioSource。
AudioListener支持所有 API。
AudioClipWebGL 支持部分 API。有关特定支持详细信息,请参阅 AudioClip。
AudioMixerWebGL 支持部分 API。有关特定支持详细信息,请参阅混音器。
SystemInfo.supportsAudio浏览器为 WebGL 提供音频支持。因此,
SystemInfo.supportsAudio
始终为 true。
Microphone不支持。

AudioSource

AudioSource API 支持基本位置音频回放,包括:
  • 暂停和恢复
  • 衰减
  • 音高设置
  • 多普勒效应支持
Unity WebGL 支持以下 AudioSource API:

设置

描述

Clip确定下一个播放的音频剪辑。
dopplerLevel设置该 AudioSource 的多普勒缩放。
ignoreListenerPause运行 AudioSource 忽略
AudioListener.pause
并继续播放音频。
ignoreListenerVolume忽略终端用户的 AudioSource 音量。
isPlaying如果
AudioSource.clip
正在播放,则返回 true。
loop允许应用程序循环播放
AudioSource.clip
。
maxDistance设置
AudioSource.clip
停止衰减或听不到的最大距离。
minDistance设置 AudioSource.clip 音量不再增大的最小距离。超过最小距离,音量开始衰减。
muteAudioSource 静音。
pitch设置
AudioSource.clip
的音高。WebGL 仅支持正音高值。
playOnAwake唤醒时播放 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
。

AudioClip

Unity WebGL 以大多数浏览器支持的 AAC 格式导入 AudioClip 文件。Unity WebGL 支持以下 AudioClip API:

属性

描述

lengthAudioClip 的长度(以秒为单位)。
loadState返回与 AudioClip 关联的音频数据的当前加载状态。
samples样本中 AudioClip 的长度。
loadType剪辑的加载类型。您可以在检视面板中设置 AudioClip 的加载类型。

方法

描述

其他信息

AudioClip.Create使用您指定的名称和长度创建一个 AudioClip。Unity WebGL 部分支持
AudioClip.Create
。浏览器不支持动态串流,因此要使用
AudioClip.Create
将 Stream 设置为 false。
AudioClip.SetData在 AudioSource.clip. 中设置样本数据。Unity WebGL 部分支持
AudioClip.SetData
。只能对加载类型 (Load Type) 设置为加载时解压缩 (Decompress on Load) 的压缩音频文件使用此方法。请参阅压缩音频。
AudioClip.GetData从 AudioSource.clip 检索具有样本数据的数组。Unity WebGL 部分支持
AudioClip.GetData
。只能对加载类型 (Load Type) 设置为加载时解压缩 (Decompress on Load) 的压缩音频文件使用此方法。请参阅压缩音频。
**注意:**要在 Linux 上支持音频剪辑,请确保已安装 ffmpeg 包。

混音器

Unity Web 支持混音器资产的某些功能。
您可以使用 Web 上的混音器执行以下操作:
  • 创建混音器资产。
  • 将 AudioMixerGroup 添加到层级视图中。
  • 调整每个组的音量。要使用脚本显示或更改音量,请使用 AudioMixer.SetFloat。
注意:音量 (Volume) 是唯一可以在 Web 上更改的属性。不支持其他属性和音效。

压缩音频

要在 Unity 中将压缩音频与 WebGL 结合使用,请将 AudioClip loadType 设置为以下选项之一:

压缩方法

描述

注意事项

CompressedInMemory使用此属性可以压缩磁盘上的音频,并在加载到应用程序内存中后保持压缩状态。压缩音频可能会导致延迟,并且在音频播放时精度较低。但是,压缩音频在应用程序中使用的内存少于解压缩音频。最佳做法是将
CompressedInMemory
用于不受精度影响的音频,例如背景音乐。
DecompressOnLoad使用此属性可以压缩磁盘上的音频,类似于 CompressedInMemory,并在加载到应用程序内存中时解压缩。与压缩音频相比,解压缩音频使用大量内存,但具有更低的延迟和更大的音频灵活性。对受精度影响的音频(例如,角色对话框或音效)使用
DecompressedOnLoad
。

音频播放和浏览器安全

出于安全考虑,浏览器禁止自动播放音频,直到最终用户通过鼠标点击、触摸事件或按键与应用程序网页进行交互。使用加载屏幕,让最终用户在主内容加载前与应用程序进行交互并启动音频播放。