Version: 2022.2
WebGL graphics
WebGL 中的嵌入式资源

Audio in WebGL

This page only provides information about audio capabilities in WebGL. To learn how to use audio in your Unity project, see the Audio Overview.

Because Unity uses FMOD to manage audio for platforms, Unity WebGL supports limited audio functionality, which only includes the basic features. FMOD relies on threads, which WebGL doesn’t support. For this reason, Unity uses an implementation based on the internal Web Audio API, which enables the browser to handle audio playback and mixing.

Note: Google Chrome’s new Autoplay policy prevents autoplay of audio and video under certain conditions. For example, while your game might be set to autoplay some background music soon after the game loads, it won’t play automatically unless you click or tap on the website. For more information on how to enable or disable this policy, see Google Chrome’s documentation on Autoplay policy in Chrome.

支持的类

Unity WebGL 支持以下 API 类:

WebGL 支持状态
AudioSource WebGL supports some APIs. See AudioSource for specific support details.
AudioListener 支持所有 API。
AudioClip WebGL 支持部分 API。有关特定支持详细信息,请参阅 AudioClip
SystemInfo.supportsAudio 浏览器为 WebGL 提供音频支持。因此,SystemInfo.supportsAudio 始终为 true。
Microphone 不支持。

AudioSource

AudioSource API 支持基本位置音频回放,包括:

  • 暂停和恢复
  • 平移
  • 衰减
  • 音高设置
  • 多普勒效应支持

Unity WebGL 支持以下 AudioSource API:

Settings 描述
Clip 确定下一个播放的音频剪辑。
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 唤醒时播放 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 imports AudioClip files in the AAC Format, which is supported by most browsers. Unity WebGL supports the following AudioClip APIs:

属性 描述
length AudioClip 的长度(以秒为单位)。
loadState 返回与 AudioClip 关联的音频数据的当前加载状态。
samples 样本中 AudioClip 的长度。
loadType 剪辑的加载类型。您可以在 Inspector 中设置 AudioClip 的加载类型。
方法 描述 其他信息
AudioClip.Create 使用您指定的名称和长度创建一个 AudioClip。 Unity WebGL partially supports AudioClip.Create. Browsers don’t support dynamic streaming, so to use AudioClip.Create, set the Stream to false.
AudioClip.SetData 在 AudioSource.clip. 中设置样本数据。 Unity WebGL 部分支持 AudioClip.SetData。只能使用此方法替换 AudioClip 的内容。在 WebGL 上,Unity 忽略 offsetSample 参数。

Note: For audio clip support on Linux, make sure you’ve installed the ffmpeg package.

压缩音频

To use compressed audio with WebGL in Unity, set the AudioClip loadType to one of the following options:

Compression method 描述 Considerations
CompressedInMemory Use this to compress the audio on disk and have it remain compressed after it loads into your application memory. Compressed audio can cause latency and is less precise when it comes to audio playback. However, compressed audio uses less memory in your application than decompressed audio. It’s best practise to use CompressedInMemory for audio that’s unaffected by precision for example, background music.
DecompressOnLoad Use this to compress the audio on disk, similar to CompressedInMemory, and decompress when it loads into your application memory. Decompressed audio uses a significant amount of memory compared to compressed audio but has lower latency and more audio flexibility. Use DecompressedOnLoad for audio that’s affected by precision (for example, character dialog or sound effects).

音频播放和浏览器安全

出于安全原因,浏览器不允许音频播放,直到终端用户通过鼠标点击、触摸事件或按键与您的应用程序网页进行交互。使用加载屏幕允许终端用户与您的应用程序交互,并在您的主要内容开始之前开始音频播放。

WebGL graphics
WebGL 中的嵌入式资源