핵심 정리
| 항목 | 내용 |
|---|---|
| 역할 | 오디오 클립을 재생하고 볼륨, 피치, 공간감, 감쇠 방식까지 결정하는 재생 컴포넌트 |
| 언제 쓰는가 | 배경음, UI 클릭음, 발소리, 환경음, 위치 기반 효과음을 재생할 때 |
| 기준 버전 | Unity 6.5 (6000.5) |
| 핵심 Inspector | Audio Clip, Output, Play On Awake, Loop, Volume, Pitch, Spatial Blend, Min/Max Distance, Rolloff |
| 자주 연결되는 API | Play, PlayOneShot, Stop, Pause, UnPause, volume, pitch, clip, isPlaying |
Inspector 설정
| 설정값 | 언제 바꾸는가 | 잘못 맞추면 생기는 문제 |
|---|---|---|
| Audio Clip | 재생할 원본을 지정할 때 | 다른 클립이 연결돼 전혀 다른 소리가 남 |
| Output | Mixer 그룹으로 보내 볼륨/필터를 분리할 때 | BGM과 SFX를 따로 제어하기 어려움 |
| Play On Awake | 씬 시작 즉시 재생할 사운드일 때 | 풀링 오브젝트가 스폰되자마자 소리를 냄 |
| Loop | 배경음, 엔진음, 환경 루프일 때 | 일회성 효과음이 끊임없이 반복됨 |
| Volume / Pitch | 소리 크기와 재생 감각을 조절할 때 | 과도한 Pitch로 의미 전달이 무너짐 |
| Spatial Blend | 2D UI 사운드와 3D 위치 사운드를 나눌 때 | 위치감이 없거나 UI 소리가 거리 감쇠를 받음 |
| Min/Max Distance / Rolloff | 3D 감쇠 범위를 맞출 때 | 너무 멀리까지 들리거나 바로 앞에서도 안 들림 |
Audio Clip, Output, Play On Awake, Loop
Audio Clip은 재생할 원본이고, Output은 어떤 Audio Mixer Group으로 보낼지 정합니다. 프로젝트에서 볼륨 관리, 덕킹, 저역 필터를 할 계획이면 Output 분리를 일찍 해 두는 편이 좋습니다.
Play On Awake는 씬 진입 시 자동 재생입니다. 배경음, 환경 루프에는 편하지만, 풀링 오브젝트나 일회성 SFX에는 의도치 않게 소리가 먼저 날 수 있습니다. Loop는 배경음, 기계음, 엔진음처럼 끊기면 안 되는 소리에 주로 씁니다.
Volume, Pitch, Priority
Volume은 기본 크기, Pitch는 재생 속도와 음높이, Priority는 동시 재생 제한이 걸릴 때 어떤 소리를 살릴지에 영향을 줍니다. UI 클릭음과 보스 컷신 대사는 Priority가 달라야 합니다.
Pitch를 연출용으로 크게 흔들면 감정은 살아나지만, 말소리나 중요한 피드백 SFX는 알아듣기 어려워질 수 있습니다.
Spatial Blend, Min/Max Distance, Rolloff
Spatial Blend가 0이면 2D 사운드, 1이면 3D 위치 기반 사운드입니다. UI는 2D, 폭발/발소리/환경음은 3D가 기본입니다. 3D 사운드는 Min/Max Distance와 Rolloff Mode까지 함께 맞춰야 합니다.
Max Distance를 너무 크게 두면 씬 전체가 시끄럽고, 너무 작으면 바로 앞에서도 들리지 않습니다. "왜 소리가 너무 멀리까지 따라오지?" 같은 문제는 Spatial Blend와 거리 감쇠부터 보는 편이 빠릅니다.
| 값 | 언제 고르는가 | 주의할 점 |
|---|---|---|
Spatial Blend = 0 | 버튼 클릭음, 메뉴 전환음, 내레이션처럼 위치감이 필요 없는 소리 | 월드 위치에 둬도 항상 같은 크기로 들림 |
Spatial Blend = 1 | 발소리, 총소리, 환경음, 오브젝트 상태음 | 거리 감쇠 설정이 틀리면 너무 작거나 너무 크게 들림 |
Rolloff = Logarithmic | 대부분의 자연스러운 3D 사운드 | 멀리서도 생각보다 오래 들릴 수 있음 |
Rolloff = Linear | 거리별 감쇠를 더 예측 가능하게 조절하고 싶을 때 | 현실감은 줄 수 있지만 튜닝은 쉬운 편 |
Rolloff = Custom | 특정 구간에서 급격한 감쇠나 특수 연출이 필요할 때 | 커브를 과하게 꺾으면 청감이 부자연스러워짐 |
스크립트 연결
| 필드/프로퍼티 | 언제 읽거나 쓰는가 | 주의할 점 |
|---|---|---|
clip | 현재 루프음을 바꿔야 할 때 | 교체 후 Play 호출 흐름 확인 |
volume | 거리, 상태, 옵션 메뉴 값에 맞춰 조절할 때 | Mixer 볼륨과 중복 제어되지 않게 주의 |
pitch | 긴장감, 속도감 연출 | 보이스나 UI 피드백에는 과도하게 쓰지 않는 편이 좋음 |
isPlaying | 현재 재생 중인지 확인할 때 | PlayOneShot 상태 판단엔 한계가 있음 |
| 메서드 | 언제 쓰는가 | 연결 지점 |
|---|---|---|
Play() | 상태를 가진 루프음 재생 | 상태 전환, 씬 진입 |
PlayOneShot() | 짧은 효과음을 겹쳐 재생 | 버튼 클릭, 발소리, 히트 |
Stop() | 즉시 끊어야 할 때 | 씬 종료, 상태 취소 |
Pause() / UnPause() | 일시정지와 복귀 | 메뉴 열기/닫기 |
한 번만 겹쳐 재생할 효과음은 PlayOneShot, 상태를 가진 루프음은 Play와 Stop이 기본입니다.
using UnityEngine;
public class FootstepAudio : MonoBehaviour
{
[SerializeField] private AudioSource source;
[SerializeField] private AudioClip footstepClip;
public void PlayFootstep()
{
source.PlayOneShot(footstepClip);
}
}UI와 애니메이션 이벤트에서는 PlayOneShot, 엔진음이나 채널링 사운드는 Update에서 volume과 pitch를 보정하며 상태 기반으로 다루는 경우가 많습니다.
자주 틀리는 부분
- 풀링 오브젝트에
Play On Awake가 켜져 있어 스폰 직후 원치 않는 소리가 날 수 있습니다. - 3D 사운드인데 Spatial Blend가 0이라 위치감이 전혀 안 나는 경우가 많습니다.
- Mixer Output을 안 나눠서 BGM과 SFX를 따로 조절하기 어려워집니다.
PlayOneShot을 계속 쌓아 너무 많은 동시 재생이 생기면 Priority와 보이스 제한 문제를 같이 봐야 합니다.
관련 컴포넌트
Animator, Particle System, Button, Timeline과 Playable Director 기본, Timeline track, signal, 컷신 구조
참고 링크
2 sources