09 오디오 - jes79/Unity-AI-Glossary-Playground GitHub Wiki
09 오디오
BGM / 효과음 / 음성을 구분해 요청하면 볼륨 설정까지 깔끔하게 나옵니다.
씬 8개 · 폴더 Assets/00_Scenes/09_Audio
| 번호 | 용어 | 쉽게 말하면 | 씬에서 보여 주는 것 | 구현 방식 |
|---|---|---|---|---|
| 0901 | AudioSource / AudioClip | 소리 내는 스피커 / 소리 파일 | 점프 효과음 PlayOneShot vs Play 연타 비교 | 런타임 데모 |
| 0902 | 사운드 매니저 | 소리 재생을 한곳에서 관리 | SoundManager.Play("Hit") 호출, AudioSource 풀 | 런타임 데모 |
| 0903 | Audio Mixer / Group | BGM·효과음 볼륨 분리 | Master/BGM/SFX 그룹 볼륨 슬라이더(dB), 실제 Audio Mixer 설정 설명 | 설명 + 대체 구현 |
| 0904 | 3D 사운드 (Spatial Blend) | 거리·방향에 따라 소리 크기 변화 | 모닥불 3D 사운드 10m 밖에서 안 들림, 3D↔2D 비교 | 런타임 데모 |
| 0905 | 크로스페이드 (Crossfade) | BGM을 부드럽게 교체 | 평화→전투 BGM 2초 크로스페이드 vs 즉시 교체 | 런타임 데모 |
| 0906 | 피치 랜덤 (Pitch Variation) | 같은 소리 반복 시 지루함 방지 | 발소리 피치 0.9~1.1 랜덤 vs 고정 비교 | 런타임 데모 |
| 0907 | 오디오 스냅샷 / 로우패스 | 상황별 음향 변화, 먹먹한 소리 | 일시정지 시 로우패스로 먹먹하게 전환, 스냅샷 절차 설명 | 설명 + 대체 구현 |
| 0908 | 리듬 / 비트 동기화 | 음악 박자에 맞춰 이벤트 | dspTime 기준 BPM 120 노트 생성·판정 | 런타임 데모 |
항목별 상세
0901
AudioSource / AudioClip — 소리 내는 스피커 / 소리 파일
요청 예문: "점프할 때 AudioSource.PlayOneShot으로 효과음을 재생해줘."
- 씬:
Assets/00_Scenes/09_Audio/0901_AudioSourceClip.unity - 핵심 스크립트:
JumpSoundDemo - 빌더:
Assets/01_Scripts/Editor/Scenes/09_Audio/Build0901_AudioSourceClip.cs - 구현 방식: 런타임 데모
- 개념: AudioClip 은 소리 파일, AudioSource 는 그 소리를 내는 스피커 컴포넌트. 효과음을 겹쳐 내려면 Play 가 아니라 PlayOneShot 을 써야 앞 소리가 끊기지 않는다.
- 씬에서 보여 주는 것: 점프 효과음 PlayOneShot vs Play 연타 비교
- 확인 포인트: 점프를 연타해 보세요. PlayOneShot 은 소리가 겹쳐 들리고, Play 는 앞 소리를 끊고 다시 시작해 뚝뚝 끊깁니다.
0902
사운드 매니저 — 소리 재생을 한곳에서 관리
요청 예문: "어디서든 SoundManager.Play("Hit")로 부를 수 있는 사운드 매니저를 만들어줘."
- 씬:
Assets/00_Scenes/09_Audio/0902_SoundManager.unity - 핵심 스크립트:
SoundManager, SoundManagerDemo - 빌더:
Assets/01_Scripts/Editor/Scenes/09_Audio/Build0902_SoundManager.cs - 구현 방식: 런타임 데모
- 개념: 소리 재생을 한 클래스로 모아 이름이나 enum 으로 호출하게 하는 구조. AudioSource 를 풀로 돌려 재사용하면 효과음이 많아도 오브젝트가 늘지 않는다.
- 씬에서 보여 주는 것: SoundManager.Play("Hit") 호출, AudioSource 풀
- 확인 포인트: 여러 효과음을 동시에 재생해 보세요. 호출은 한 줄인데 소리가 겹쳐 나고, AudioSource 개수가 풀 크기 이상으로 늘지 않는지 보세요.
0903
Audio Mixer / Group — BGM·효과음 볼륨 분리
요청 예문: "Audio Mixer로 Master, BGM, SFX 그룹을 나누고 설정창 슬라이더와 연결해줘."
- 씬:
Assets/00_Scenes/09_Audio/0903_AudioMixer.unity - 핵심 스크립트:
SimpleAudioMixer, AudioMixerDemo - 빌더:
Assets/01_Scripts/Editor/Scenes/09_Audio/Build0903_AudioMixer.cs - 구현 방식: 설명 + 대체 구현
- 개념: 소리를 BGM·SFX 같은 그룹으로 묶어 그룹별 볼륨과 효과를 거는 에셋. 설정 화면의 볼륨 슬라이더는 거의 항상 믹서 그룹을 조절한다. 볼륨은 dB 단위라 로그 변환이 필요하다.
- 씬에서 보여 주는 것: Master/BGM/SFX 그룹 볼륨 슬라이더(dB), 실제 Audio Mixer 설정 설명
- 확인 포인트: Master / BGM / SFX 슬라이더를 따로 움직여 해당 그룹 소리만 변하는지 보세요. 슬라이더를 0 으로 내려도 소리가 완전히 꺼지는지(dB 변환) 확인해 보세요.
0904
3D 사운드 (Spatial Blend) — 거리·방향에 따라 소리 크기 변화
요청 예문: "모닥불 소리를 3D로 만들고 10m 밖에서는 안 들리게 해줘."
- 씬:
Assets/00_Scenes/09_Audio/0904_SpatialSound.unity - 핵심 스크립트:
SpatialSoundDemo - 빌더:
Assets/01_Scripts/Editor/Scenes/09_Audio/Build0904_SpatialSound.cs - 구현 방식: 런타임 데모
- 개념: Spatial Blend 를 3D 로 두어 거리와 방향에 따라 음량·좌우가 변하게 하는 설정. Max Distance 밖에서는 들리지 않으며, 3D 소리는 모노로 가져오는 것이 원칙이다.
- 씬에서 보여 주는 것: 모닥불 3D 사운드 10m 밖에서 안 들림, 3D↔2D 비교
- 확인 포인트: 모닥불에서 멀어지며 소리가 작아지고 10m 밖에서 들리지 않는지, 좌우로 돌 때 방향감이 생기는지 보세요. 2D 로 바꾸면 거리와 무관하게 똑같이 들립니다.
0905
크로스페이드 (Crossfade) — BGM을 부드럽게 교체
요청 예문: "전투 시작 시 평화 BGM에서 전투 BGM으로 2초 크로스페이드해줘."
- 씬:
Assets/00_Scenes/09_Audio/0905_Crossfade.unity - 핵심 스크립트:
CrossfadeDemo - 빌더:
Assets/01_Scripts/Editor/Scenes/09_Audio/Build0905_Crossfade.cs - 구현 방식: 런타임 데모
- 개념: 두 BGM 을 겹쳐 한쪽은 줄이고 한쪽은 올려 자연스럽게 바꾸는 기법. 평화 ↔ 전투 전환처럼 분위기가 바뀔 때 뚝 끊기지 않게 한다.
- 씬에서 보여 주는 것: 평화→전투 BGM 2초 크로스페이드 vs 즉시 교체
- 확인 포인트: 전투 상태로 바꿔 BGM 이 2초에 걸쳐 섞이며 넘어가는지 보세요. 즉시 교체와 비교하면 차이가 분명합니다.
0906
피치 랜덤 (Pitch Variation) — 같은 소리 반복 시 지루함 방지
요청 예문: "발소리를 재생할 때마다 피치를 0.9~1.1 랜덤으로 바꿔줘."
- 씬:
Assets/00_Scenes/09_Audio/0906_PitchVariation.unity - 핵심 스크립트:
PitchVariationDemo - 빌더:
Assets/01_Scripts/Editor/Scenes/09_Audio/Build0906_PitchVariation.cs - 구현 방식: 런타임 데모
- 개념: 같은 효과음을 재생할 때 음높이를 조금씩 무작위로 바꿔 반복을 덜 느끼게 하는 기법. 발소리·타격음처럼 자주 나는 소리에 특히 효과가 크다.
- 씬에서 보여 주는 것: 발소리 피치 0.9~1.1 랜덤 vs 고정 비교
- 확인 포인트: 걸어 발소리를 들어 보세요. 피치 0.9~1.1 랜덤이면 같은 파일인데 매번 조금 달라 지루하지 않고, 고정으로 바꾸면 기계적으로 들립니다.
0907
오디오 스냅샷 / 로우패스 — 상황별 음향 변화, 먹먹한 소리
요청 예문: "일시정지 중엔 BGM이 먹먹하게 들리도록 Low Pass 필터 스냅샷을 만들어줘."
- 씬:
Assets/00_Scenes/09_Audio/0907_AudioSnapshotLowPass.unity - 핵심 스크립트:
AudioSnapshotDemo - 빌더:
Assets/01_Scripts/Editor/Scenes/09_Audio/Build0907_AudioSnapshotLowPass.cs - 구현 방식: 설명 + 대체 구현
- 개념: 믹서 설정을 묶어 저장해 두고 상황에 따라 전환하는 스냅샷, 고음을 깎아 먹먹하게 만드는 로우패스 필터. 일시정지·수중·벽 뒤 소리 표현에 쓴다.
- 씬에서 보여 주는 것: 일시정지 시 로우패스로 먹먹하게 전환, 스냅샷 절차 설명
- 확인 포인트: 일시정지해 보세요. 소리가 먹먹하게 바뀌고, 해제하면 원래대로 돌아옵니다. 전환이 뚝 끊기지 않고 보간되는지도 들어 보세요.
0908
리듬 / 비트 동기화 — 음악 박자에 맞춰 이벤트
요청 예문: "AudioSettings.dspTime으로 BPM 120 박자에 맞춰 노트를 생성해줘."
- 씬:
Assets/00_Scenes/09_Audio/0908_RhythmSync.unity - 핵심 스크립트:
RhythmSyncDemo - 빌더:
Assets/01_Scripts/Editor/Scenes/09_Audio/Build0908_RhythmSync.cs - 구현 방식: 런타임 데모
- 개념: AudioSettings.dspTime 을 기준으로 BPM 에 맞춰 이벤트를 만드는 처리. Time.time 은 프레임에 흔들려 리듬 게임 판정에 쓸 수 없다.
- 씬에서 보여 주는 것: dspTime 기준 BPM 120 노트 생성·판정
- 확인 포인트: BPM 120 에 맞춰 노트가 생성되고 판정선에 맞춰 떨어지는지 보세요. 프레임이 흔들려도 노트 간격이 밀리지 않는 것이 dspTime 의 핵심입니다.