Parcourir la source

mk声音系统调整

薛鸿潇 il y a 5 ans
Parent
commit
d50f46d4f6

+ 90 - 14
assets/resources/module/reward/reward.prefab

@@ -27,20 +27,20 @@
     "_active": true,
     "_components": [
       {
-        "__id__": 116
+        "__id__": 118
       },
       {
-        "__id__": 117
+        "__id__": 119
       },
       {
-        "__id__": 118
+        "__id__": 120
       },
       {
-        "__id__": 119
+        "__id__": 121
       }
     ],
     "_prefab": {
-      "__id__": 120
+      "__id__": 122
     },
     "_opacity": 255,
     "_color": {
@@ -4107,21 +4107,86 @@
     "_parent": {
       "__id__": 1
     },
-    "_children": [],
+    "_children": [
+      {
+        "__id__": 112
+      }
+    ],
     "_active": true,
     "_components": [
       {
-        "__id__": 112
+        "__id__": 115
       },
       {
-        "__id__": 113
-      },
+        "__id__": 116
+      }
+    ],
+    "_prefab": {
+      "__id__": 117
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        303.19,
+        464.26,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        0
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "关闭按钮",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 111
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
       {
-        "__id__": 114
+        "__id__": 113
       }
     ],
     "_prefab": {
-      "__id__": 115
+      "__id__": 114
     },
     "_opacity": 255,
     "_color": {
@@ -4145,8 +4210,8 @@
       "__type__": "TypedArray",
       "ctor": "Float64Array",
       "array": [
-        303.19,
-        464.26,
+        0,
+        0,
         0,
         0,
         0,
@@ -4175,7 +4240,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 111
+      "__id__": 112
     },
     "_enabled": true,
     "_materials": [
@@ -4203,6 +4268,17 @@
     "_id": ""
   },
   {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "14193c60-068a-42b4-92cf-a6cb623fe40f"
+    },
+    "fileId": "821lQx8dVBspl+Kh4BdhFY",
+    "sync": false
+  },
+  {
     "__type__": "cc.Button",
     "_name": "",
     "_objFlags": 0,

+ 12 - 0
assets/script/game/data/GameData.ts

@@ -139,6 +139,7 @@ export enum GameProp {
     /** 当前能否签到 */
     sign_can = 121,
 }
+
 /**
  * 奖励状态
  */
@@ -149,4 +150,15 @@ export enum RewardState {
     lock = 2,
     /** 可领取 */
     unlock = 3
+}
+
+/**
+ * 音频路径
+ */
+export enum AUDIO_TYPE {
+    bgm = 'Background_music1',           //背景音乐
+    button = 'Button_click',            //按钮点击音效
+    turntableDraw = 'turntable1',           //转盘抽奖结束
+    turntableDrawEnd = 'turntable_2',           //转盘抽奖音效
+    getGold = 'Get_gold',       //获取金币音效
 }

+ 0 - 247
assets/script/game/manager/AudioManager.ts

@@ -1,247 +0,0 @@
-/**
- * 音频模块
- * @author 薛鸿潇
- */
-export default class AudioManager {
-
-    /** 音乐开关 */
-    private _switchMusic: boolean = true;
-    /** 音效开关 */
-    private _switchEffect: boolean = true;
-    /** 音效音量 */
-    private _effectVolume: number = 1;
-    /** 音乐音量 */
-    private _musicVolume: number = 1;
-    /** 暂时音效开关 */
-    private _switchTempEffect: boolean = true;
-    /** 音频map */
-    private _map_audio: Map<AUDIO_NAME, cc.AudioClip> = new Map();
-
-    /** 初始化 */
-    public init() {
-        // 获取本地开关设置
-        let effect = cc.sys.localStorage.getItem("switchEffect");
-        if (effect) {
-            if (effect == "true") {
-                this._switchEffect = true;
-            } else {
-                this._switchEffect = false;
-            }
-        }
-
-        let music = cc.sys.localStorage.getItem("switchMusic");
-        if (music) {
-            if (music == "true") {
-                this._switchMusic = true;
-            } else {
-                this._switchMusic = false;
-            }
-        }
-
-        if (this._switchMusic) {
-            this.playMusic('bgm', true)
-        }
-    }
-
-    /**
-     * 播放音乐文件
-     * @param audio_name 音频名字
-     * @param loop 是否循环【默认循环】
-     */
-    public async playMusic(audio_name: AUDIO_NAME, loop: boolean = true) {
-        let asset = this._map_audio.get(audio_name);
-        if (!asset) {
-            asset = await mk.loader.load(AUDIO_PATH + audio_name, cc.AudioClip);
-            this._map_audio.set(audio_name, asset);
-        }
-        mk.audio.playMusic(asset, loop);
-    }
-
-    /**
-     * 播放音效文件
-     * @param audio_name 音频名字
-     * @param loop 是否循环【默认不循环】
-     */
-    public async playEffect(audio_name: AUDIO_NAME, loop: boolean = false) {
-        if (this._switchEffect && this._switchTempEffect) {
-            let asset = this._map_audio.get(audio_name);
-            if (!asset) {
-                asset = await mk.loader.load(AUDIO_PATH + audio_name, cc.AudioClip);
-                this._map_audio.set(audio_name, asset);
-            }
-            mk.audio.playEffect(asset, loop);
-        }
-    }
-
-    /**
-     * 停止播放音效
-     * @param audio_id 音频id
-     */
-    public stopEffect(audio_id: number) {
-        mk.audio.stopEffect(audio_id);
-    }
-
-    /**
-     * 转换音效开关
-     */
-    public switchEffectFunc() {
-        this._switchEffect = !this._switchEffect;
-        if (!this._switchEffect) {
-            this.setStopAllEffect();
-        }
-        cc.sys.localStorage.setItem("switchEffect", this._switchEffect.toString());
-    }
-
-    /**
-     * 获取音效开关状态
-     * @returns {boolean}
-     */
-    public getSwitchEffect(): boolean {
-        return this._switchEffect;
-    }
-
-    /**
-     * 设置音效声音大小
-     * value: 0.0 - 1.0
-     */
-    public setEffectVolume(value: number) {
-        this._effectVolume = value;
-        mk.audio.setEffectVolume(value);
-        cc.sys.localStorage.setItem("audio", JSON.stringify({ effect: this._effectVolume, music: this._musicVolume }));
-    }
-
-    /**
-     * 获取音效大小
-     * @return {number} 0.0 - 1.0
-     */
-    public getEffectVolume(): number {
-        return mk.audio.getEffectVolume();
-    }
-
-    /**
-     * 恢复当前说暂停的所有音效
-     */
-    public setResumeAllEffect() {
-        if (this._switchEffect) {
-            mk.audio.resumeAllEffects();
-        }
-    }
-
-    /**
-     * 停止播放所有正在播放的音效
-     */
-    public setStopAllEffect() {
-        mk.audio.stopAllEffects();
-    }
-
-    /** 暂时开启关闭音效开关
-     * @param state true  打开  false 关闭
-     */
-    public setTempEffect(state: boolean) {
-        this._switchTempEffect = state;
-    }
-
-    /**
-     * 转换音乐按钮开关
-     */
-    public switchMusicFunc() {
-        this._switchMusic = !this._switchMusic;
-        if (!this._switchMusic) {
-            this.stopMusic();
-        } else {
-            this.playMusic('bgm');
-        }
-        cc.sys.localStorage.setItem("switchMusic", this._switchMusic.toString());
-    }
-
-    /**
-     * 获取音乐开关状态
-     * @returns {boolean}
-     */
-    public getSwitchMusic() {
-        return this._switchMusic;
-    }
-
-    /**
-     * 暂停当前播放音乐
-     */
-    public setPauseMusic() {
-        mk.audio.pauseMusic();
-    }
-
-    /**
-     * 恢复当前被暂停音乐音乐
-     */
-    public setResumeMusic() {
-        if (this._switchMusic) {
-            mk.audio.resumeMusic();
-        }
-    }
-
-    /**
-     * 暂停所有 music
-     */
-    public stopMusic() {
-        mk.audio.stopMusic();
-    }
-
-    /**
-     * 设置music音量
-     * @param value 音量
-     */
-    public setMusicVolume(value: number) {
-        this._musicVolume = value;
-        mk.audio.setMusicVolume(value);
-        cc.sys.localStorage.setItem("audio", JSON.stringify({ effect: this._effectVolume, music: this._musicVolume }));
-    }
-
-    /**
-     * 获取当前music音量
-     * @returns {number} 音量
-     */
-    public getMusicVolume() {
-        return mk.audio.getMusicVolume();
-    }
-
-    /**
-     * 音乐是否正在播放(验证些方法来实现背景音乐是否播放完成)
-     * @returns {boolen}
-     */
-    public isMusicPlaying() {
-        return mk.audio.isMusicPlaying();
-    }
-
-    /**
-     * 释放指定音效资源
-     * @param audio 音频资源
-     */
-    public releaseAudio(audio: cc.AudioClip) {
-        if (!audio) {
-            cc.error("【音频】资源" + audio + "不存在, 释放失败")
-            return;
-        }
-        mk.audio.releaseAudio(audio);
-    }
-
-    /** 停止所有音效 */
-    public stopAllAudio() {
-        mk.audio.stopAllAudio();
-    }
-
-    /** 卸载所有音频 */
-    public releaseAllAudio() {
-        mk.audio.releaseAllAudio();
-    }
-}
-/** 音频路径 */
-const AUDIO_PATH = 'music/';
-/** 声音枚举 */
-enum AUDIO_TYPE {
-    bgm = 'Background_music1',           //背景音乐
-    button = 'Button_click',            //按钮点击音效
-    turntableDraw = 'turntable1',           //转盘抽奖结束
-    turntableDrawEnd = 'turntable_2',           //转盘抽奖音效
-    getGold = 'Get_gold',       //获取金币音效
-}
-/** 外部读取到的类型 */
-type AUDIO_NAME = keyof typeof AUDIO_TYPE;

+ 0 - 9
assets/script/game/manager/AudioManager.ts.meta

@@ -1,9 +0,0 @@
-{
-  "ver": "1.0.8",
-  "uuid": "23fb4f4f-fbcf-4147-8940-a4e141f50f3c",
-  "isPlugin": false,
-  "loadPluginInWeb": true,
-  "loadPluginInNative": true,
-  "loadPluginInEditor": false,
-  "subMetas": {}
-}

+ 145 - 39
assets/script/mk/system/AudioSystem.ts

@@ -1,99 +1,205 @@
+import { AUDIO_TYPE } from "../../game/data/GameData";
+
 /**
  * 音频模块
  * @author 薛鸿潇
  */
 export default class AudioSystem {
 
+    /** 音乐开关 */
+    private _switchMusic: boolean = true;
+    /** 音效开关 */
+    private _switchEffect: boolean = true;
+    /** 音效音量 */
+    private _effectVolume: number = 1;
+    /** 音乐音量 */
+    private _musicVolume: number = 1;
+    /** 暂时音效开关 */
+    private _switchTempEffect: boolean = true;
+    /** 音频map */
+    private _map_audio: Map<AUDIO_NAME, cc.AudioClip> = new Map();
+
+    /** 初始化 */
+    public init() {
+        // 获取本地开关设置
+        let effect = cc.sys.localStorage.getItem("switchEffect");
+        if (effect) {
+            if (effect == "true") {
+                this._switchEffect = true;
+            } else {
+                this._switchEffect = false;
+            }
+        }
+
+        let music = cc.sys.localStorage.getItem("switchMusic");
+        if (music) {
+            if (music == "true") {
+                this._switchMusic = true;
+            } else {
+                this._switchMusic = false;
+            }
+        }
+
+        if (this._switchMusic) {
+            this.playMusic('bgm', true)
+        }
+    }
+
     /**
-     * 背景音乐播放
-     * @param clip 音频资源
-     * @param loop 循环
-     * @returns audio_id
+     * 播放音乐文件
+     * @param audio_name 音频名字
+     * @param loop 是否循环【默认循环】
      */
-    public playMusic(clip: cc.AudioClip, loop: boolean = false): number {
-        return cc.audioEngine.playMusic(clip, loop);
+    public async playMusic(audio_name: AUDIO_NAME, loop: boolean = true) {
+        let asset = this._map_audio.get(audio_name);
+        if (!asset) {
+            asset = await mk.loader.load(AUDIO_PATH + audio_name, cc.AudioClip);
+            this._map_audio.set(audio_name, asset);
+        }
+        cc.audioEngine.playMusic(asset, loop);
     }
 
     /**
      * 播放音效文件
-     * @param clip 
-     * @param loop 
-     * @returns audio_id
-     */
-    public playEffect(clip: cc.AudioClip, loop = false): number {
-        return cc.audioEngine.playEffect(clip, loop);
+     * @param audio_name 音频名字
+     * @param loop 是否循环【默认不循环】
+     */
+    public async playEffect(audio_name: AUDIO_NAME, loop: boolean = false) {
+        if (this._switchEffect && this._switchTempEffect) {
+            let asset = this._map_audio.get(audio_name);
+            if (!asset) {
+                asset = await mk.loader.load(AUDIO_PATH + audio_name, cc.AudioClip);
+                this._map_audio.set(audio_name, asset);
+            }
+            cc.audioEngine.playEffect(asset, loop);
+        }
     }
 
     /**
      * 停止播放音效
-     * @param audio_id 
+     * @param audio_id 音频id
      */
-    public stopEffect(audio_id: number): void {
+    public stopEffect(audio_id: number) {
         cc.audioEngine.stopEffect(audio_id);
     }
 
     /**
+     * 转换音效开关
+     */
+    public switchEffectFunc() {
+        this._switchEffect = !this._switchEffect;
+        if (!this._switchEffect) {
+            this.setStopAllEffect();
+        }
+        cc.sys.localStorage.setItem("switchEffect", this._switchEffect.toString());
+    }
+
+    /**
+     * 获取音效开关状态
+     * @returns {boolean}
+     */
+    public getSwitchEffect(): boolean {
+        return this._switchEffect;
+    }
+
+    /**
      * 设置音效声音大小
-     * @param value 
+     * value: 0.0 - 1.0
      */
-    public setEffectVolume(value: number): void {
+    public setEffectVolume(value: number) {
+        this._effectVolume = value;
         cc.audioEngine.setEffectsVolume(value);
+        cc.sys.localStorage.setItem("audio", JSON.stringify({ effect: this._effectVolume, music: this._musicVolume }));
     }
 
     /**
      * 获取音效大小
-     * @return 0.0 - 1.0
+     * @return {number} 0.0 - 1.0
      */
     public getEffectVolume(): number {
         return cc.audioEngine.getEffectsVolume();
     }
 
     /**
+     * 恢复当前说暂停的所有音效
+     */
+    public setResumeAllEffect() {
+        if (this._switchEffect) {
+            cc.audioEngine.resumeAllEffects();
+        }
+    }
+
+    /**
      * 停止播放所有正在播放的音效
      */
-    public stopAllEffects() {
+    public setStopAllEffect() {
         cc.audioEngine.stopAllEffects();
     }
 
+    /** 暂时开启关闭音效开关
+     * @param state true  打开  false 关闭
+     */
+    public setTempEffect(state: boolean) {
+        this._switchTempEffect = state;
+    }
+
     /**
-     * 暂停当前播放音乐
+     * 转换音乐按钮开关
      */
-    public pauseMusic() {
-        cc.audioEngine.pauseMusic();
+    public switchMusicFunc() {
+        this._switchMusic = !this._switchMusic;
+        if (!this._switchMusic) {
+            this.stopMusic();
+        } else {
+            this.playMusic('bgm');
+        }
+        cc.sys.localStorage.setItem("switchMusic", this._switchMusic.toString());
     }
 
     /**
-     * 恢复当前说暂停的所有音效
+     * 获取音乐开关状态
+     * @returns {boolean}
      */
-    public resumeAllEffects() {
-        cc.audioEngine.resumeAllEffects();
+    public getSwitchMusic() {
+        return this._switchMusic;
+    }
+
+    /**
+     * 暂停当前播放音乐
+     */
+    public setPauseMusic() {
+        cc.audioEngine.pauseMusic();
     }
 
     /**
      * 恢复当前被暂停音乐音乐
      */
-    public resumeMusic() {
-        cc.audioEngine.resumeMusic();
+    public setResumeMusic() {
+        if (this._switchMusic) {
+            cc.audioEngine.resumeMusic();
+        }
     }
 
     /**
-     * 暂停播放音乐
+     * 暂停所有 music
      */
     public stopMusic() {
         cc.audioEngine.stopMusic();
     }
 
     /**
-     * 设置音乐音量
-     * @param value 0~1音量
+     * 设置music音量
+     * @param value 音量
      */
     public setMusicVolume(value: number) {
+        this._musicVolume = value;
         cc.audioEngine.setMusicVolume(value);
+        cc.sys.localStorage.setItem("audio", JSON.stringify({ effect: this._effectVolume, music: this._musicVolume }));
     }
 
     /**
-     * 获取音乐音量
-     * @returns {number}
+     * 获取当前music音量
+     * @returns {number} 音量
      */
     public getMusicVolume() {
         return cc.audioEngine.getMusicVolume();
@@ -101,7 +207,7 @@ export default class AudioSystem {
 
     /**
      * 音乐是否正在播放(验证些方法来实现背景音乐是否播放完成)
-     * @returns {boolean}
+     * @returns {boolen}
      */
     public isMusicPlaying() {
         return cc.audioEngine.isMusicPlaying();
@@ -119,17 +225,17 @@ export default class AudioSystem {
         cc.audioEngine.uncache(audio);
     }
 
-    /**
-     * 停止所有音频
-     */
+    /** 停止所有音效 */
     public stopAllAudio() {
         cc.audioEngine.stopAll();
     }
 
-    /**
-     * 释放所有音频
-     */
+    /** 卸载所有音频 */
     public releaseAllAudio() {
         cc.audioEngine.uncacheAll();
     }
-}
+}
+/** 音频路径 */
+const AUDIO_PATH = 'music/';
+/** 外部读取到的类型 */
+type AUDIO_NAME = keyof typeof AUDIO_TYPE;

+ 1 - 1
assets/script/mk/system/AudioSystem.ts.meta

@@ -1,6 +1,6 @@
 {
   "ver": "1.0.8",
-  "uuid": "1506c7e8-e3ee-4092-83cc-a17f3a7c051d",
+  "uuid": "23fb4f4f-fbcf-4147-8940-a4e141f50f3c",
   "isPlugin": false,
   "loadPluginInWeb": true,
   "loadPluginInNative": true,