统一音频系统是一个完整的游戏音频管理解决方案,支持背景音乐、UI音效、敌人音效、环境音效和武器音效的分类管理。该系统提供了灵活的配置、独立的音量控制和便捷的静态访问接口。
AudioManager (核心管理器)
├── 背景音乐管理 (Music)
├── UI音效管理 (UI Sounds)
├── 敌人音效管理 (Enemy Sounds) ← EnemyAudios
├── 环境音效管理 (Environment Sounds)
└── 武器音效管理 (Weapon Sounds)
AudioConfig (配置管理)
└── 统一音频资源配置
assets/scripts/AudioManager/
├── AudioManager.ts # 核心音频管理器
├── AudioConfig.ts # 音频配置管理
├── EnemyAudios.ts # 敌人音效管理器
└── SoundController.ts # 音频控制器(UI相关)
// 播放背景音乐
Audio.playMusic('audio/music/game_background', true);
// 播放UI音效
Audio.playUISound('audio/ui/button_click');
// 播放敌人音效
Audio.playEnemySound('audio/enemy/goblin_attack');
// 播放环境音效
Audio.playEnvironmentSound('audio/environment/explosion');
// 播放武器音效
Audio.playWeaponSound('audio/weapon/gun_shot');
// 设置音乐音量
Audio.setMusicVolume(0.6);
// 设置UI音效音量
Audio.setUISoundVolume(0.8);
// 设置敌人音效音量
Audio.setEnemySoundVolume(0.7);
// 设置所有音效音量
Audio.setAllSoundVolume(0.5);
// 静音所有音频
Audio.muteAll();
// 只静音音效,保留音乐
Audio.muteAllSounds();
// 播放特定敌人的音效
EnemyAudio.playAttackSound('goblin');
EnemyAudio.playDeathSound('orc');
EnemyAudio.playHitSound('skeleton');
EnemyAudio.playWalkSound('zombie');
EnemyAudio.playSpecialSound('boss');
const audioManager = AudioManager.getInstance();
// 播放分类音效
audioManager.playUISound('audio/ui/button_click');
audioManager.playEnemySound('audio/enemy/attack');
// 音量控制
audioManager.setUISoundVolume(0.8);
audioManager.setEnemySoundVolume(0.7);
// 获取音频配置
const config = AudioConfig.getAudioConfig('audio/ui/button_click');
// 获取分类配置
const uiCategory = AudioConfig.getCategoryConfig(AudioType.UI_SOUND);
// 获取默认音量
const defaultVolume = AudioConfig.getDefaultVolume(AudioType.ENEMY_SOUND);
// 验证音频路径
const isValid = AudioConfig.isValidAudioPath('audio/music/background');
// 快速访问各类音频配置
const musicList = AudioConfigHelper.music;
const uiSounds = AudioConfigHelper.uiSounds;
const enemySounds = AudioConfigHelper.enemySounds;
敌人音效通过 enemies.json 文件进行配置:
{
"goblin": {
"audioConfig": {
"attack": "audio/enemy/goblin/attack",
"death": "audio/enemy/goblin/death",
"hit": "audio/enemy/goblin/hit",
"walk": "audio/enemy/goblin/walk"
}
}
}
Canvas/AudioManager 节点AudioManager 组件EnemyAudios 作为 AudioManager 的子模块assets/audio/
├── music/ # 背景音乐
│ ├── main_menu.mp3
│ └── game_background.mp3
├── ui/ # UI音效
│ ├── button_click.wav
│ └── menu_open.wav
├── enemy/ # 敌人音效
│ ├── goblin/
│ └── orc/
├── environment/ # 环境音效
│ └── explosion.wav
└── weapon/ # 武器音效
└── gun_shot.wav
AudioType 枚举中添加新类型AudioManager 中添加对应的 AudioSourceAudioConfig 中添加配置// 可以扩展为支持运行时动态加载音频资源
AudioManager.getInstance().loadAudioClip(path).then(clip => {
// 播放动态加载的音频
});
// 可以扩展支持音频效果,如淡入淡出、变调等
AudioManager.getInstance().playWithFadeIn(audioPath, 2.0); // 2秒淡入
音效不播放
音效延迟
音量控制无效
系统提供详细的控制台日志:
[AudioManager] 初始化音频源: UI音效
[EnemyAudios] 播放攻击音效: audio/enemy/goblin/attack
[AudioManager] 设置敌人音效音量: 0.7
统一音频系统提供了:
该系统为游戏提供了专业级的音频管理解决方案,支持从简单的音效播放到复杂的音频系统管理的各种需求。