From d76dde0974d0fb8a36ac06b7b7e4f9d0fb159683 Mon Sep 17 00:00:00 2001 From: JiWoong Sul Date: Wed, 31 Dec 2025 15:41:04 +0900 Subject: [PATCH] =?UTF-8?q?fix(audio):=20=EC=9B=B9=20=ED=99=98=EA=B2=BD=20?= =?UTF-8?q?=EC=97=90=EC=85=8B=20=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - setAsset 경로에서 'assets/' 접두사 제거 - Flutter Web에서 경로 중복(assets/assets/...) 오류 해결 - BGM, Player SFX, Monster SFX 모든 경로 수정 --- lib/src/core/audio/audio_service.dart | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/src/core/audio/audio_service.dart b/lib/src/core/audio/audio_service.dart index 9409bf4..990fde2 100644 --- a/lib/src/core/audio/audio_service.dart +++ b/lib/src/core/audio/audio_service.dart @@ -97,8 +97,8 @@ class AudioService { /// BGM 재생 /// - /// [name]은 assets/audio/bgm/ 폴더 내 파일명 (확장자 제외) - /// 예: playBgm('battle') → assets/audio/bgm/battle.mp3 + /// [name]은 audio/bgm/ 폴더 내 파일명 (확장자 제외) + /// 예: playBgm('battle') → audio/bgm/battle.mp3 /// /// 웹에서 사용자 상호작용 없이 호출되면 대기 상태로 저장되고, /// 다음 SFX 재생 시 함께 시작됩니다. @@ -110,7 +110,7 @@ class AudioService { if (_currentBgm == name) return; // 이미 재생 중 try { - await _bgmPlayer!.setAsset('assets/audio/bgm/$name.mp3'); + await _bgmPlayer!.setAsset('audio/bgm/$name.mp3'); await _bgmPlayer!.play(); _currentBgm = name; _pendingBgm = null; @@ -177,8 +177,8 @@ class AudioService { /// 플레이어 이펙트 SFX 재생 /// - /// [name]은 assets/audio/sfx/ 폴더 내 파일명 (확장자 제외) - /// 예: playPlayerSfx('attack') → assets/audio/sfx/attack.mp3 + /// [name]은 audio/sfx/ 폴더 내 파일명 (확장자 제외) + /// 예: playPlayerSfx('attack') → audio/sfx/attack.mp3 /// /// 대기열 기반으로 모든 사운드의 완전 재생을 보장합니다. Future playPlayerSfx(String name) async { @@ -190,13 +190,13 @@ class AudioService { // 웹에서 대기 중인 BGM 재생 시도 _tryPlayPendingBgm(); - await _playerSfxPool?.play('assets/audio/sfx/$name.mp3'); + await _playerSfxPool?.play('audio/sfx/$name.mp3'); } /// 몬스터 이펙트 SFX 재생 /// - /// [name]은 assets/audio/sfx/ 폴더 내 파일명 (확장자 제외) - /// 예: playMonsterSfx('hit') → assets/audio/sfx/hit.mp3 + /// [name]은 audio/sfx/ 폴더 내 파일명 (확장자 제외) + /// 예: playMonsterSfx('hit') → audio/sfx/hit.mp3 /// /// 대기열 기반으로 모든 사운드의 완전 재생을 보장합니다. Future playMonsterSfx(String name) async { @@ -208,7 +208,7 @@ class AudioService { // 웹에서 대기 중인 BGM 재생 시도 _tryPlayPendingBgm(); - await _monsterSfxPool?.play('assets/audio/sfx/$name.mp3'); + await _monsterSfxPool?.play('audio/sfx/$name.mp3'); } /// 웹에서 대기 중인 BGM 재생 시도 (사용자 상호작용 발생 시) @@ -223,8 +223,8 @@ class AudioService { /// SFX 재생 (레거시 호환) /// - /// [name]은 assets/audio/sfx/ 폴더 내 파일명 (확장자 제외) - /// 예: playSfx('attack') → assets/audio/sfx/attack.mp3 + /// [name]은 audio/sfx/ 폴더 내 파일명 (확장자 제외) + /// 예: playSfx('attack') → audio/sfx/attack.mp3 /// /// @deprecated playPlayerSfx 또는 playMonsterSfx를 사용하세요. Future playSfx(String name) => playPlayerSfx(name);