import { _decorator, Component, Node, Button } from 'cc'; import { Audio } from '../AudioManager/AudioManager'; const { ccclass, property } = _decorator; /** * 音频系统使用示例 * 展示如何在游戏中使用音频功能 */ @ccclass('AudioExample') export class AudioExample extends Component { @property({ type: Button, tooltip: '播放背景音乐按钮' }) public playMusicButton: Button = null; @property({ type: Button, tooltip: '停止背景音乐按钮' }) public stopMusicButton: Button = null; @property({ type: Button, tooltip: '播放音效按钮' }) public playSFXButton: Button = null; onLoad() { this.bindEvents(); } private bindEvents() { if (this.playMusicButton) { this.playMusicButton.node.on(Button.EventType.CLICK, this.onPlayMusicClick, this); } if (this.stopMusicButton) { this.stopMusicButton.node.on(Button.EventType.CLICK, this.onStopMusicClick, this); } if (this.playSFXButton) { this.playSFXButton.node.on(Button.EventType.CLICK, this.onPlaySFXClick, this); } } private onPlayMusicClick() { // 播放背景音乐 Audio.playMusic('audio/music/background_music', true); // 播放按钮点击音效 Audio.playSFX('audio/sfx/button_click', 0.6); } private onStopMusicClick() { // 停止背景音乐 Audio.stopMusic(); // 播放按钮点击音效 Audio.playSFX('audio/sfx/button_click', 0.6); } private onPlaySFXClick() { // 播放各种音效示例 Audio.playSFX('audio/sfx/weapon_fire', 0.8); // 延迟播放爆炸音效 this.scheduleOnce(() => { Audio.playSFX('audio/sfx/explosion', 1.0); }, 0.5); } /** * 游戏开始时的音频设置示例 */ public onGameStart() { // 播放游戏开始音效 Audio.playSFX('audio/sfx/game_start'); // 延迟播放背景音乐 this.scheduleOnce(() => { Audio.playMusic('audio/music/game_background'); }, 1.0); } /** * 游戏暂停时的音频设置示例 */ public onGamePause() { // 暂停背景音乐 Audio.pauseMusic(); // 播放暂停音效 Audio.playSFX('audio/sfx/pause'); } /** * 游戏恢复时的音频设置示例 */ public onGameResume() { // 恢复背景音乐 Audio.resumeMusic(); // 播放恢复音效 Audio.playSFX('audio/sfx/resume'); } /** * 游戏结束时的音频设置示例 */ public onGameOver() { // 停止背景音乐 Audio.stopMusic(); // 播放游戏结束音效 Audio.playSFX('audio/sfx/game_over'); // 延迟播放结束音乐 this.scheduleOnce(() => { Audio.playMusic('audio/music/game_over', false); }, 1.0); } /** * 武器发射音效示例 */ public onWeaponFire(weaponType: string) { switch (weaponType) { case 'pea_shooter': Audio.playSFX('audio/pea_shot', 0.7); break; case 'sharp_carrot': Audio.playSFX('audio/carrot_shot', 0.8); break; case 'saw_grass': Audio.playSFX('audio/saw_shot', 0.9); break; case 'watermelon_bomb': Audio.playSFX('audio/bomb_launch', 1.0); break; case 'boomerang_plant': Audio.playSFX('audio/boomerang_throw', 0.8); break; case 'hot_pepper': Audio.playSFX('audio/pepper_launch', 0.9); break; case 'cactus_shotgun': Audio.playSFX('audio/cactus_shot', 1.0); break; case 'okra_missile': Audio.playSFX('audio/missile_launch', 1.0); break; default: Audio.playSFX('audio/sfx/default_shot', 0.7); break; } } /** * UI交互音效示例 */ public onUIInteraction(interactionType: string) { switch (interactionType) { case 'button_click': Audio.playSFX('audio/sfx/button_click', 0.6); break; case 'button_hover': Audio.playSFX('audio/sfx/button_hover', 0.4); break; case 'menu_open': Audio.playSFX('audio/sfx/menu_open', 0.7); break; case 'menu_close': Audio.playSFX('audio/sfx/menu_close', 0.7); break; case 'slider_change': Audio.playSFX('audio/sfx/slider_change', 0.3); break; case 'checkbox_toggle': Audio.playSFX('audio/sfx/checkbox_toggle', 0.5); break; } } /** * 动态调整音量示例 */ public adjustVolumeBasedOnGameState(gameState: string) { switch (gameState) { case 'menu': Audio.setMusicVolume(0.6); Audio.setSFXVolume(0.8); break; case 'playing': Audio.setMusicVolume(0.4); Audio.setSFXVolume(1.0); break; case 'paused': Audio.setMusicVolume(0.2); Audio.setSFXVolume(0.6); break; case 'game_over': Audio.setMusicVolume(0.8); Audio.setSFXVolume(0.7); break; } } }