跳到主要内容

音频效果

点击不同按钮,体验各种音效。

备注

本教程需要浏览器支持 Web Audio API。

使用 Web Audio API​

PlayCanvas 允许充分利用 Web Audio API,为声音添加丰富的效果。本教程演示如何向音频片段添加多种效果。

配置​

你可以在此处查看场景。Root 实体具有 Sound 组件,其中的一个槽位循环播放简短语音。如果不熟悉 Sound 组件,请先阅读基础教程。

Root 实体还具有 Script 组件,挂载了两个脚本:一个负责用户界面,另一个是本教程重点介绍的 application.js。

此脚本负责管理应用的音效。

使用 AudioNode​

Web Audio API 可以创建各种音频节点,并将它们连接成音频路由图。音频播放时会依次经过节点处理,最终到达输出端,通常是扬声器。更多信息见 Web Audio API 文档。

本例使用 Convolver 节点。在应用脚本中按如下方式创建:

this.convolver = this.app.systems.sound.context.createConvolver();

接着使用多个音频片段作为卷积器的脉冲响应,原理见此文档。每个片段都是音频资源,根据点击的按钮选择资源,再将其内部缓冲区赋给卷积器缓冲区:

var asset = this[assetName];
this.convolver.buffer = asset.resource.buffer;

然后将卷积器连接到声音槽位:

this.entity.sound.slot('speech').setExternalNodes(this.convolver);

点击 None(无)按钮会清除所有效果,实际上就是调用槽位的 clearExternalNodes:

this.entity.sound.slot('speech').clearExternalNodes();

如果音频节点图更复杂,需要将其连接到槽位,请向 setExternalNodes 提供图中的第一个和最后一个节点,使 PlayCanvas 能正确将末端节点连接到扬声器。

Sound 组件 API 的更多信息见此处。