| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- 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;
- }
- }
- }
|