본문으로 건너뛰기
게임 프로젝트 기초집LESSON 15

사운드 연결: 효과음과 배경음을 과도한 결합 없이 관리하기

난이도초급 프로젝트
예상 시간45분
선수지식14강 UI와 피드백

15강. 사운드 연결: 효과음과 배경음을 과도한 결합 없이 관리하기

1. 이번 강의에서 해결할 문제​

SortZone과 GameSession마다 AudioSource를 직접 호출하면 클립 교체와 음량 정책이 게임 규칙에 섞입니다. 결과 이벤트를 오디오 전용 Presenter가 듣게 합니다.

2. 학습 목표​

3. 핵심 개념​

게임 규칙은 “정답·실패가 발생했다”만 알리고 AudioPresenter가 어떤 클립을 재생할지 결정합니다. 짧은 효과음은 PlayOneShot, 반복 배경음은 별도 Source의 Loop를 사용합니다. 무료 에셋도 상업 이용·표시 조건을 확인하고 출처 문서에 기록합니다.

4. 단계별 실습​

C# · GameSession.cs에 결과 이벤트 추가

GameSession.cs
public event Action<PackageOutcome> OutcomeResolved;

// HandleResolved에서 상태 계산 전후 한 번 호출
OutcomeResolved?.Invoke(outcome);

C# · 파일 경로: Assets/_Project/Scripts/Audio/AudioPresenter.cs

AudioPresenter.cs
using DeliverySorter.Core;
using DeliverySorter.Gameplay;
using UnityEngine;

namespace DeliverySorter.Audio
{
public sealed class AudioPresenter : MonoBehaviour
{
[SerializeField] private GameSession session;
[SerializeField] private AudioSource effectsSource;
[SerializeField] private AudioClip correctClip;
[SerializeField] private AudioClip failureClip;

private void OnEnable() => session.OutcomeResolved += PlayOutcome;
private void OnDisable() => session.OutcomeResolved -= PlayOutcome;

private void PlayOutcome(PackageOutcome outcome)
{
AudioClip clip = outcome == PackageOutcome.Correct ? correctClip : failureClip;
if (clip != null && effectsSource != null) effectsSource.PlayOneShot(clip);
}
}
}

Unity Editor 작업: Audio GameObject에 효과음용 AudioSource와 Presenter를 붙입니다. 배경음은 별도 AudioSource에 Loop를 켜고 Play On Awake 여부를 상태 정책에 맞게 정합니다.

Inspector 연결 작업: Session, Effects Source, 두 Clip을 연결합니다. 무료 클립의 출처·라이선스를 ThirdPartyAssets.md에 기록합니다.

테스트 작업: 정답과 실패를 빠르게 반복해 음량이 지나치게 커지거나 클립이 끊기지 않는지 확인합니다. 무음 상태에서도 null 예외 없이 플레이되어야 합니다.

5. 코드가 동작하는 이유​

AudioPresenter만 AudioClip과 AudioSource를 알고 GameSession은 결과 의미만 이벤트로 보냅니다. 클립을 바꾸거나 음량 믹서를 추가해도 판정·점수 코드가 바뀌지 않습니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

사운드 연결: 효과음과 배경음을 과도한 결합 없이 관리하기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“사운드 연결: 효과음과 배경음을 과도한 결합 없이 관리하기” 내용을 실제 작업에 적용한 설명으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘모든 소리를 DontDestroyOnLoad’ 상태에 관한 “사운드 연결: 효과음과 배경음을 과도한 결합 없이 관리하기” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

15강. 사운드 연결: 효과음과 배경음을 과도한 결합 없이 관리하기 미완료 상태