Version: Unity 6.0 (6000.0)
语言 : 中文
Web 图形
Web 中的视频播放

Web 中的音频

本页面仅提供有关 Web 平台中的音频功能的信息。要了解如何在 Unity 项目中使用音频,请参阅音频概述

因为 Unity 通常使用 FMOD 管理平台的音频,所以 Web 平台的音频功能有限,仅支持基本功能。FMOD 依赖于线程,而__ WebGL__一款 JavaScript API,可在 Web 浏览器中渲染 2D 和 3D 图形。Unity WebGL 构建选项让 Unity 能够将内容发布为 JavaScript 程序,而这些程序会使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。更多信息
See in Glossary
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 提供音频支持。因此,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 音量不再增大的最小距离。超过最小距离,音量开始衰减。
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 以大多数浏览器支持的 AAC 格式导入 AudioClip 文件。Unity WebGL 支持以下 AudioClip API:

属性 描述
length AudioClip 的长度(以秒为单位)。
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

音频播放和浏览器安全

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

Web 图形
Web 中的视频播放