Version: 6000.3
语言: 中文
启用 WebGPU 图形 API
在 Web 中播放视频

Web 中的音频

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

因为 Unity 使用Unity 中的 FMOD音频构建在名为 FMOD 的中间件之上。FMOD 与 Unity 引擎集成,用于创建和播放交互式音频。
请参阅术语表
要管理平台的音频,Web 平台支持有限的音频功能,其中仅包括基本功能。FMOD 依赖于线程,其中WebGL一种在 Web 浏览器中呈现 2D 和 3D 图形的 JavaScript API。Unity Web 构建选项允许 Unity 将内容发布为 JavaScript 程序,这些程序使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。更多信息
请参阅术语表
API 不支持。因此,Unity 使用基于内部 Web 音频 API 的实现,使浏览器能够处理音频播放和混合。

注意:Google Chrome 的新自动播放政策会阻止音频和视频在某些条件下自动播放。例如,虽然您的游戏可能设置为在游戏加载后立即自动播放一些背景音乐,但除非您单击或点击网站,否则它不会自动播放。如需详细了解如何启用或停用此政策,请参阅 Google Chrome 中有关 Chrome 中自动播放政策的文档。

支持的课程

Unity Web 支持以下 API 类:

WebGL 支持状态
音频源 WebGL 支持一些 API。有关具体支持详细信息,请参阅 AudioSource
音频监听器 支持所有 API。
音频剪辑 WebGL 支持一些 API。有关具体支持详细信息,请参阅 AudioClip
混音器 WebGL 支持一些 API。有关具体支持详细信息,请参阅混音器
SystemInfo.supports音频 浏览器为 WebGL 提供音频支持。出于这个原因,SystemInfo.supportsAudio总是正确的。
麦克风 不支持。

音频源

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

  • 暂停和恢复
  • 滚降
  • 音高设置
  • 多普勒效应支持

Unity WebGL 支持以下 AudioSource API:

设置 描述
确定音频剪辑Unity 中音频数据的容器。Unity 支持单声道、立体声和多声道音频资产(最多 8 个声道)。Unity 可以导入 .aif、.wav、.mp3 和 .ogg 音频文件格式,以及 .xm、.mod、.it 和 .s3m 跟踪器模块格式。更多信息
请参阅术语表
接下来播放。
多普勒级 设置 AudioSource 的多普勒比例。
ignoreListenerPause 允许 AudioSource 忽略AudioListener.pause并继续播放音频。
ignoreListenerVolume (忽略监听器卷) 忽略最终用户的 AudioSource 音量。
正在播放 如果AudioSource.clip正在播放。
允许应用程序循环AudioSource.clip.
最大距离 设置最大距离,其中AudioSource.clip停止衰减或变得听不见。
最小距离 设置 AudioSource.clip 不再增加音量的最小距离。声音开始衰减超过最小距离。
静音 将 AudioSource 静音。
设置AudioSource.clip.WebGL 仅支持正间距值。
playOnAwake 在唤醒时播放 AudioSource。
滚降模式 设置 AudioSource 随距离的衰减。
时间 设置播放位置(以秒为单位)。
时间样本 设定脉冲编码调制 (PCM) 样本中的播放位置。
速度更新模式 设置 AudioSource 是在固定更新循环还是动态更新循环中更新。
设置 AudioSource 的音量(0.0 到 1.0)。
暂停 暂停AudioSource.clip.
播放AudioSource.clip.
播放延迟 播放AudioSource.clip以秒为单位指定的延迟。
PlayOneShot 游戏 播放 AudioClip 并按 volumeScale 缩放 AudioSource 音量。
播放计划 在指定的时间播放 AudioSource。
设置计划结束时间 设置计划的时间AudioSource.clip结束。
设置计划启动时间 设置计划的时间AudioSource.clip开始。
停止播放AudioSource.clip.
取消暂停 取消暂停AudioSource.clip.
播放剪辑点 扮演一个AudioSource.clip在世界空间的给定位置。

注意:因为音频数据是在浏览器中解码的decodeAudioData,音频文件的运行时采样率可能与序列化音频数据 (44100Hz) 不同,因为浏览器将匹配BaseAudioContext采样率,通常与设备音频驱动程序设置保持一致。考虑到这一点,我们建议验证AudioClip.frequency值,或使用AudioSource.time执行寻道作时。

音频剪辑

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

性能 描述
频率 剪辑的采样频率(以赫兹为单位)。
长度 AudioClip 的长度(以秒为单位)。
负载状态 返回与 AudioClip 关联的音频数据的当前加载状态。
样品 AudioClip 的长度(以样本为单位)。
负载类型 夹子的加载类型。您可以在检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
.
方法 描述 其他信息
音频剪辑.创建 使用指定的名称和长度创建 AudioClip。 Unity WebGL 部分支持AudioClip.Create.浏览器不支持动态流,因此使用AudioClip.Create,将 Stream 设置为 false。
音频剪辑.设置数据 在 AudioSource.clip 中设置示例数据。 Unity WebGL 部分支持AudioClip.SetData.只能对 加载类型(Load Type) 设置为 加载时解压缩(Decompress on Load) 的压缩音频文件使用此方法。请参阅压缩音频
音频剪辑.获取数据 从 AudioSource.clip 检索包含示例数据的数组。 Unity WebGL 部分支持AudioClip.GetData.只能对 加载类型(Load Type) 设置为 加载时解压缩(Decompress on Load) 的压缩音频文件使用此方法。请参阅压缩音频

注意:要在 Linux 上支持音频剪辑,请确保您已安装 ffmpeg 包。

混音器

Unity Web 支持 Audio Mixer 资源的某些功能。

您可以使用 Web 上的混音器执行以下作:

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

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

压缩音频

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

您还可以在 Unity 编辑器中更改这些设置。若要更改设置,请选择音频片段,然后将检查器窗口中的“载入类型”设定为首选选项(“载入时解压缩”或“在内存中压缩”)。

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

iOS 浏览器上的静音模式问题

iOS 设备上的静音模式开关在 Web 版本中的压缩和未压缩音频剪辑上的行为不同。在静音模式下,在 iOS 设备上听不到未压缩的声音,因为 WebKit 对此音频节点类型的分类与MediaElementSourceNode,用于CompressedInMemory听 起来。有关详细信息,请参阅 WebKit 问题 #262781

如果将音频片段的loadTypeDecompressOnLoad,则在处于静音模式的 iOS 设备上将听不到该剪辑。要确保无论静音模式如何播放音频,请设置音频剪辑loadTypeCompressedInMemory.此问题仅发生在 Web 版本中。

如果您需要在场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
开始时,建议在临时场景中完全加载声音,并加法加载目标场景

音频播放和浏览器安全

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

启用 WebGPU 图形 API
在 Web 中播放视频