版本:Unity 6 (6000.0)
语言:English
Web 图形
Web 中的视频播放

Web 中的音频

此页面仅提供有关 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

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

AudioClip

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 上使用音频混音器执行以下操作

  • 创建音频混音器资产。
  • 将 AudioMixerGroup 添加到层次结构中。
  • 调整每个组的音量。要使用脚本公开或更改音量,请使用AudioMixer.SetFloat

注意:音量是您可以在 Web 上更改的唯一属性。其他属性和声音效果不受支持。

压缩音频

要在 Unity 中将压缩音频与 WebGL 一起使用,请将 AudioCliploadType 设置为以下选项之一

压缩一种存储数据的方法,可减少其所需的存储空间。请参阅纹理压缩动画压缩音频压缩构建压缩
请参阅术语表
方法
描述 注意事项
CompressedInMemory 使用此方法压缩磁盘上的音频,并在其加载到应用程序内存后保持压缩状态。 压缩音频可能会导致延迟,并且在音频播放方面不太精确。但是,与未压缩音频相比,压缩音频在应用程序中使用的内存更少。最佳做法是将 CompressedInMemory 用于不受精度影响的音频,例如背景音乐。
DecompressOnLoad 使用此方法压缩磁盘上的音频,类似于 CompressedInMemory,并在其加载到应用程序内存时解压缩。 与压缩音频相比,解压缩音频使用大量内存,但延迟较低,并且音频灵活性更高。对于受精度影响的音频(例如角色对话或音效),请使用 DecompressedOnLoad

音频播放和浏览器安全

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

Web 图形
Web 中的视频播放