Table of Contents

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 사용해야 함)

실습 과제

  1. BGM 하나를 재생하고 StopBGMAsync로 정지한다.
  2. UI 버튼에 PlayUIClick/PlayUIConfirm을 연결한다.

이전 문서 / 다음 문서

이전: 13_CameraSystem.md 다음: 15_EffectSystem.md

관련 API

MCP_Index.md Audio 섹션