diff --git a/assets/resources/music.meta b/assets/resources/music.meta new file mode 100644 index 00000000..70a01689 --- /dev/null +++ b/assets/resources/music.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "dedd7eec-c366-427a-a253-1cd907c8dc69", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/resources/music/Attack_01.wav b/assets/resources/music/Attack_01.wav new file mode 100644 index 00000000..bb22ab1b Binary files /dev/null and b/assets/resources/music/Attack_01.wav differ diff --git a/assets/resources/music/Attack_01.wav.meta b/assets/resources/music/Attack_01.wav.meta new file mode 100644 index 00000000..0720de40 --- /dev/null +++ b/assets/resources/music/Attack_01.wav.meta @@ -0,0 +1,14 @@ +{ + "ver": "1.0.0", + "importer": "audio-clip", + "imported": true, + "uuid": "9d34eb17-93b0-4e19-817e-aa289eebf54e", + "files": [ + ".json", + ".wav" + ], + "subMetas": {}, + "userData": { + "downloadMode": 0 + } +} diff --git a/assets/resources/music/Attack_02.wav b/assets/resources/music/Attack_02.wav new file mode 100644 index 00000000..95281d59 Binary files /dev/null and b/assets/resources/music/Attack_02.wav differ diff --git a/assets/resources/music/Attack_02.wav.meta b/assets/resources/music/Attack_02.wav.meta new file mode 100644 index 00000000..ecdd15fd --- /dev/null +++ b/assets/resources/music/Attack_02.wav.meta @@ -0,0 +1,14 @@ +{ + "ver": "1.0.0", + "importer": "audio-clip", + "imported": true, + "uuid": "7788bbf2-19b3-4d2b-9b29-73c1a3611bf2", + "files": [ + ".json", + ".wav" + ], + "subMetas": {}, + "userData": { + "downloadMode": 0 + } +} diff --git a/assets/resources/music/Critical.wav b/assets/resources/music/Critical.wav new file mode 100644 index 00000000..c229bbad Binary files /dev/null and b/assets/resources/music/Critical.wav differ diff --git a/assets/resources/music/Critical.wav.meta b/assets/resources/music/Critical.wav.meta new file mode 100644 index 00000000..84c7ae18 --- /dev/null +++ b/assets/resources/music/Critical.wav.meta @@ -0,0 +1,14 @@ +{ + "ver": "1.0.0", + "importer": "audio-clip", + "imported": true, + "uuid": "55262788-4684-484b-9273-5af16c12690d", + "files": [ + ".json", + ".wav" + ], + "subMetas": {}, + "userData": { + "downloadMode": 0 + } +} diff --git a/assets/resources/music/Hit.wav b/assets/resources/music/Hit.wav new file mode 100644 index 00000000..52e290d8 Binary files /dev/null and b/assets/resources/music/Hit.wav differ diff --git a/assets/resources/music/Hit.wav.meta b/assets/resources/music/Hit.wav.meta new file mode 100644 index 00000000..249bce0f --- /dev/null +++ b/assets/resources/music/Hit.wav.meta @@ -0,0 +1,14 @@ +{ + "ver": "1.0.0", + "importer": "audio-clip", + "imported": true, + "uuid": "eab9c19a-d17b-44c1-8182-666328bfd379", + "files": [ + ".json", + ".wav" + ], + "subMetas": {}, + "userData": { + "downloadMode": 0 + } +} diff --git a/assets/resources/music/dun.wav b/assets/resources/music/dun.wav new file mode 100644 index 00000000..7e044d92 Binary files /dev/null and b/assets/resources/music/dun.wav differ diff --git a/assets/resources/music/dun.wav.meta b/assets/resources/music/dun.wav.meta new file mode 100644 index 00000000..a45d9071 --- /dev/null +++ b/assets/resources/music/dun.wav.meta @@ -0,0 +1,14 @@ +{ + "ver": "1.0.0", + "importer": "audio-clip", + "imported": true, + "uuid": "4ced6d9e-6d28-40ed-a43e-7f1911ad5e22", + "files": [ + ".json", + ".wav" + ], + "subMetas": {}, + "userData": { + "downloadMode": 0 + } +} diff --git a/assets/script/game/common/SingletonModuleComp.ts b/assets/script/game/common/SingletonModuleComp.ts index 57f22e1b..9599a8c3 100644 --- a/assets/script/game/common/SingletonModuleComp.ts +++ b/assets/script/game/common/SingletonModuleComp.ts @@ -16,6 +16,8 @@ import { FightSet } from "./config/GameSet"; */ export interface GameDate { gold: number, + switch_effect?: boolean, // 音效开关 + switch_music?: boolean, // 音乐开关 timestamp?: number, // 用于比对本地与云端数据的最新状态 } export interface CloudData { @@ -129,6 +131,8 @@ export class SingletonModuleComp extends ecs.Comp { } as GameScoreStats, gold: 0, // 金币数据(MVVM绑定字段) + switch_effect: true, // 音效开关(MVVM绑定字段) + switch_music: true, // 音乐开关(MVVM绑定字段) }; @@ -219,6 +223,16 @@ export class SingletonModuleComp extends ecs.Comp { if (data.gold !== undefined) { this.vmdata.gold = data.gold; } + // 同步音效开关 + if (data.switch_effect !== undefined) { + this.vmdata.switch_effect = data.switch_effect; + if (oops.audio) oops.audio.switchEffect = data.switch_effect; + } + // 同步音乐开关 + if (data.switch_music !== undefined) { + this.vmdata.switch_music = data.switch_music; + if (oops.audio) oops.audio.switchMusic = data.switch_music; + } } // 触发UI更新 @@ -231,6 +245,8 @@ export class SingletonModuleComp extends ecs.Comp { getGameDate() { let data: GameDate = { gold: this.vmdata.gold, + switch_effect: this.vmdata.switch_effect, + switch_music: this.vmdata.switch_music, timestamp: Date.now() // 每次获取当前数据结构时都附带最新的时间戳 }; return data; @@ -245,6 +261,22 @@ export class SingletonModuleComp extends ecs.Comp { return true } + updateSwitchEffect(isOpen: boolean, is_sync: boolean = true) { + this.vmdata.switch_effect = isOpen; + if (oops.audio) oops.audio.switchEffect = isOpen; + if (is_sync) { + gameDataSync.markDataDirty(); + } + } + + updateSwitchMusic(isOpen: boolean, is_sync: boolean = true) { + this.vmdata.switch_music = isOpen; + if (oops.audio) oops.audio.switchMusic = isOpen; + if (is_sync) { + gameDataSync.markDataDirty(); + } + } + /** * 在游戏载入早期调用,预加载常用图集 */ diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index 7e8e746f..b94718c4 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -523,6 +523,13 @@ export class HeroViewComp extends CCComp { if (damage <= 0) return; + // 播放受击音效 + if (isCrit) { + oops.audio.playEffect("music/Critical"); + } else { + oops.audio.playEffect("music/Hit"); + } + // 视图层表现 let SConf=SkillSet[s_uuid] const hitAnm = SConf?.DAnm|| "atked";