14. AudioSystem
왜 필요한가
BGM/SFX 재생, 볼륨 관리, UI 사운드를 화면마다 각자 구현하면 볼륨 설정이 어긋나고 중복 재생이 발생한다.
언제 사용하는가
BGM 재생/정지, 효과음 재생, UI 클릭/오픈/닫기 사운드가 필요할 때.
프로젝트에서 어떤 역할인가
Integration 계층에서 오디오 재생을 감싸고 볼륨을 카테고리별(GetVolume/SetVolume)로 관리한다.
실제 게임에서는 언제 호출되는가
씬 진입 시 PlayBGMAsync, 버튼 클릭 시 PlayUIClick, 전투 중 PlaySFXAsync.
코드 예제
[Inject] private IAudioSystem _audio;
await _audio.PlayBGMAsync("Stage01_BGM");
_audio.PlayUIClick();
관련 Sample
Samples/Audio/AudioSystemSample.cs
Best Practice
동시에 많이 겹치는 효과음은 PlaySFXControlledAsync로 제어(중복 제한)한다.
자주 하는 실수
AudioSource를 직접 붙여 재생 (AssetSystem/AudioSystem을 우회)- 볼륨을 PlayerPrefs 등으로 별도 관리 (
SetVolume/GetVolume사용해야 함)
실습 과제
- BGM 하나를 재생하고
StopBGMAsync로 정지한다. - UI 버튼에
PlayUIClick/PlayUIConfirm을 연결한다.
이전 문서 / 다음 문서
이전: 13_CameraSystem.md 다음: 15_EffectSystem.md
관련 API
MCP_Index.md Audio 섹션