feat(音频): 添加音频资源、音效开关与战斗音效播放逻辑

- 新增Hit、Critical、Attack_01/02、dun等音频资源及元文件
- 新增音效与背景音乐开关配置,包含状态同步与更新方法
- 在英雄受击时根据暴击状态播放对应音效
This commit is contained in:
panFD
2026-06-13 09:37:23 +08:00
parent 092d0e4371
commit 4460c1aaf2
13 changed files with 118 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "dedd7eec-c366-427a-a253-1cd907c8dc69",
"files": [],
"subMetas": {},
"userData": {}
}

Binary file not shown.

View File

@@ -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
}
}

Binary file not shown.

View File

@@ -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
}
}

Binary file not shown.

View File

@@ -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
}
}

Binary file not shown.

View File

@@ -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
}
}

Binary file not shown.

View File

@@ -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
}
}

View File

@@ -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();
}
}
/**
* 在游戏载入早期调用,预加载常用图集
*/

View File

@@ -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";