SuperAPI AI 工具集

audio-and-sound

编程与开发

查看项目

更新于 10-15 16:37

技能介绍

用途:该技能用于在 Phaser 4 游戏中加入音频与音效。Phaser 通过 this.sound(SoundManager)提供统一声音系统,抽象 Web Audio API 与 HTML5 Audio,处理加载、播放、音量、声道平移、循环、标记、音频精灵、空间音频以及浏览器自动播放策略解锁。

主要能力:支持用 this.load.audio() 加载音频,并可用 URL 数组做跨浏览器格式回退。可根据设备与配置自动选择 WebAudioSoundManager(首选)、HTML5AudioSoundManager,或无音频的 NoAudioSoundManager。WebAudio 具备精确计时、无缝循环、立体声声像、空间音频、逐音效增益节点及运行时解码;HTML5 Audio 则不支持空间音频与实际立体声平移,循环精度较低,同时播放需在加载时指定 instances 数量。

使用方式:在 preload 中 this.load.audio('bgm', 'assets/music.mp3'),在 create 中用 this.sound.play('coin') 即发即弃播放,或用 this.sound.add('bgm', { loop: true, volume: 0.5 }) 保留引用后调用 play()。可设置 volume、rate、detune、loop、seek、pan 等属性;全局值作用于所有声音。音频精灵经 this.load.audioSprite() 加载 JSON 与音频文件后用 playAudioSprite() 播放,也可用 addMarker() 手动添加标记。空间音频使用 source 配置与 setListenerPosition(),仅 WebAudio 可用。

限制:每个游戏仅一个共享 SoundManager,声音不会随场景关闭自动清理,循环声音跨场景持续播放需手动停止。this.sound.play() 创建的实例完成后自动销毁,无法后续控制。空间音频在 HTML5 Audio 下被静默忽略。iOS/Safari 不支持 StereoPannerNode,pan 无实际效果;iOS 17/18+ 后台可能中断音频,由 Phaser 处理。浏览器自动播放策略由 Phaser 自动监听用户交互解锁,可用 UNLOCKED 事件判断就绪。SPA 中可通过 audio: { context: existingAudioContext } 复用 WebAudio 上下文,还可用 setAudioContext() 运行时替换。