敌人音效系统采用分层架构设计,确保清晰的依赖关系和良好的可维护性:
AudioManager (核心音频管理器)
↑
EnemyAudios (敌人专用音效管理器)
↑
EnemyInstance (敌人实例)
AudioManager/AudioManager.ts - 核心音频管理器AudioManager/EnemyAudios.ts - 敌人音效管理器CombatSystem/EnemyInstance.ts - 敌人实例(集成音效调用)resources/data/enemies.json - 敌人配置文件(包含音效配置){
"enemyType": {
"audioConfig": {
"attackSound": "audio/enemy/attack1",
"deathSound": "audio/enemy/death1",
"hitSound": "audio/enemy/hit1",
"walkSound": "audio/enemy/walk1"
},
"audio": {
"attackSound": "enemy_attack_01",
"deathSound": "enemy_death_01",
"hitSound": "enemy_hit_01",
"walkSound": "enemy_walk_01"
}
}
}
在Cocos Creator编辑器中:
音效会在以下时机自动播放:
performAttack方法)playWalkAnimation方法)takeDamage方法)playDeathAnimationAndDestroy方法)// 在EnemyInstance中的使用示例
import { EnemyAudio } from "../../AudioManager/EnemyAudios";
// 攻击时播放音效
performAttack() {
EnemyAudio.playAttack(this.enemyConfig);
// ... 其他攻击逻辑
}
// 受击时播放音效
takeDamage(damage: number) {
EnemyAudio.playHit(this.enemyConfig);
// ... 其他受击逻辑
}
音效路径获取优先级:
audioConfig 中的路径(优先)audio 中的标识符resources/audio/enemy/目录下{enemyType}_{soundType}_{variant}goblin_attack_01.mp3enemies.json中为每个敌人类型配置完整的音效音效不播放
音效路径错误
循环引用错误
敌人音效系统通过清晰的分层架构和配置驱动的方式,实现了灵活、可维护的音效管理。系统避免了循环依赖,确保了代码的清晰性和可扩展性。通过合理的配置和使用,可以为游戏提供丰富的音效体验。