오디오 소스 (Audio Source)
https://docs.unity3d.com/kr/2023.2/Manual/class-AudioSource.html
오디오 소스(Audio Source) 는 씬에서 오디오 클립을 재생합니다.
이 클립은 오디오 리스너 또는 오디오 믹서를 통해 재생 가능합니다.
오디오 소스는 모든 종류의 오디오 클립을 재생할 수 있으며, 2D나 3D로, 또는 혼합(스페이셜 블렌드)하여 재생하도록 설정할 수 있습니다.
오디오는 여러 스피커에 분배되거나(스테레오–7.1)(_ 스프레드), 3D와 2D 사이에서 자연스럽게 모핑됩니다( 스페이셜 블렌드_).
감쇠 커브를 통해 거리에 따라 제어할 수 있습니다.
또한 리스너가 하나 이상의 리버브 존에 있을 경우 소스에 잔향이 적용됩니다.
더 풍부한 음향감을 위해 각 오디오 소스에 개별 필터를 적용할 수 있습니다.
자세한 내용은 오디오 효과를 참조하십시오.
프로퍼티
프로퍼티 | 설명 | |
---|---|---|
Audio Clip | 재생될 사운드 클립에 대한 레퍼런스입니다. | |
Output | 기본적으로 클립은 씬의 오디오 리스너에 직접 출력됩니다. 이 프로퍼티를 사용하면 클립을 오디오 믹서에 출력합니다. | |
Mute | 옵션을 활성화하면 사운드가 음소거된 상태로 재생이 됩니다. | |
Spatialize | 오디오 소스에 대한 커스텀 공간화를 활성화하거나 비활성화합니다. 이 프로퍼티는 오디오 스페이셜라이저 SDK를 설치하고 프로젝트의 전역 audio 설정에서 선택한 경우에만 사용할 수 있습니다. | |
Spatialize Post Effect | 오디오 소스에 연결된 다른 효과 앞뒤에 커스텀 공간화를 적용할지 결정합니다. 이 프로퍼티를 활성화하면 오디오 소스에 연결된 다른 효과 뒤에 커스텀 공간화를 적용합니다. 이 프로퍼티는 오디오 소스에 대해 Spatialize 프로퍼티를 활성화한 경우에만 사용할 수 있습니다. | |
Bypass Effects | 오디오 소스에 적용된 필터 효과를 즉시 “바이패스(우회)”합니다. 모든 효과를 쉽게 켜고 끌 수 있는 옵션입니다. | |
Bypass Listener Effects | 모든 리스너 효과를 즉시 켜거나 끄는 옵션입니다. | |
Bypass Reverb Zones | 모든 리버브 존을 즉시 켜거나 끄는 옵션입니다. | |
Play On Awake | 옵션을 활성화하면 씬이 실행되는 시점에 사운드 재생이 시작됩니다. 이 옵션을 비활성화하면 스크립팅에서 Play() 명령을 사용하여 사운드 재생을 시작해야 합니다. | |
Loop | 옵션을 활성화하면 재생이 끝날 때 Audio Clip 루프가 생성됩니다. | |
Priority | 씬 안에 공존하는 모든 오디오 소스 중 현재 오디오 소스의 우선 순위를 결정합니다 (우선 순위: 0 = 최우선 순위, 256 = 최하 순위, 디폴트값 = 128). 순위가 잘못 바뀌는 경우를 막기 위해 음악 트랙은 0으로 설정해야 합니다. | |
Volume | Audio Listener__로부터 1월드 유닛(1미터) 거리에서 소리가 얼마나 크게 들리는지를 정의합니다. | |Pitch__ | Audio Clip 의 재생 속도가 빨라지거나 느려졌을 때의 피치 변화량을 나타냅니다. 노멀한 재생 속도일 경우 값은 1입니다. |
Stereo Pan | 2D 사운드의 스테레오 필드 포지션을 설정합니다. | |
Spatial Blend | 3D 엔진이 오디오 소스에 미치는 효과의 정도를 설정합니다. | |
Reverb Zone Mix | 리버브 존으로 보내지는 출력 신호의 양을 설정합니다. 이 양은 0–1 범위에서는 선형적이며, 1–1.1 범위에서는 10dB 증폭이 가능하여 근거리 필드나 원거리 사운드 효과를 내는 데 유용합니다. | |
3D Sound Settings | 설정은 공간 블렌드 파라미터에 비례해 적용됩니다. | |
Doppler Level | 현재 오디오 소스에 적용될 도플러 이펙트의 정도를 결정합니다 (0으로 설정하면 아무 효과도 적용되지 않음). *도플러 효과 – 움직이는 물체에서 나오는 파동은 파동원과 관찰자의 상대 속도에 비례하여 주파수가 변하며, 다가오면 높아지고(고음) 멀어지면 낮아진다(저음). | |
Spread | 스피커 공백에서 3D 스테레오 사운드 또는 멀티채널 사운드로의 스프레드 각도를 설정합니다. | |
Min Distance | 사운드는 최소거리 내에서 가능한 한 최대 음량을 유지하고, 최소거리를 벗어나면 감쇠됩니다. 3d 세계에서 사운드를 ‘크게’ 만들기 위해서는 해당 사운드의 최소거리를 증가시키고, 사운드를 ‘작게’ 하려면 최소거리를 감소시키면 됩니다. | |
Max Distance | 사운드 감쇠가 더 이상 일어나지 않는 거리를 의미합니다. 이 포인트를 넘어서면 사운드는 리스너로부터 최대거리 유닛 위치의 영역으로 유지되며 더 이상 감쇠되지 않습니다. | |
Rolloff Mode | 사운드가 페이드되는 속도를 나타냅니다. 값이 클수록 리스너 위치가 더 가까워져야 사운드가 들립니다 (그래프에 의해 결정됩니다). | |
– Logarithmic Rolloff | 오디오 소스에 가까우면 사운드가 크지만 오브젝트로부터 멀어지면 상당히 빠른 속도로 사운드가 작아집니다. | |
– Linear Rolloff | 오디오 소스로부터 멀어질수록 사운드가 점점 작아지게 됩니다. | |
– Custom Rolloff | 오디오 소스로부터의 사운드는 롤오프 그래프에 설정한 대로 작동합니다. |
롤오프 타입(Types of Rolloff)
롤오프 모드에는 로그, 리니어, 커스텀 롤오프 등 세 가지 모드가 있습니다. 커스텀 롤오프는 아래 설명처럼 볼륨 거리 커브를 수정하여 변경할 수 있습니다.
로그 또는 리니어로 설정된 상태에서 볼륨 거리 함수를 수정하려 하면, 롤오프 타입이 커스텀 롤오프로 자동 변경됩니다.
코드로 접근
https://forum.unity.com/threads/audio-realistic-sound-rolloff-tool.543362/
using UnityEngine; public class AudioSourceCustomRolloff : MonoBehaviour { [SerializeField] AudioSource _AudioSource; private void Awake() { var animCurve = new AnimationCurve( new Keyframe(_AudioSource.minDistance, 1f), new Keyframe(_AudioSource.minDistance + (_AudioSource.maxDistance - _AudioSource.minDistance) / 4f, .35f), new Keyframe(_AudioSource.maxDistance, 0f)); _AudioSource.rolloffMode = AudioRolloffMode.Custom; animCurve.SmoothTangents(1, .025f); _AudioSource.SetCustomCurve(AudioSourceCurveType.CustomRolloff, animCurve); _AudioSource.dopplerLevel = 0f; _AudioSource.reverbZoneMix = 0.9f; _AudioSource.spread = 60f; } }
거리 함수(Distance Functions)
오디오 프로퍼티 중에는 오디오 소스와 오디오 리스너 사이의 거리 함수로 수정할 수 있는 것이 있습니다.
Volume: 거리에 대한 진폭(0.0 – 1.0)을 나타냅니다.
Spatial Blend: 2D(오리지널 채널 매핑)에서 3D(거리와 방향에 따라 감쇠되거나 모노로 다운믹스된 모든 채널).
Spread: 거리에 대한 각도(0.0–360.0°)를 의미합니다.
Low-Pass(AudioSource에 로우패스 필터가 추가되는 경우에만): 거리에 대한 컷오프 주파수(22000.0–10.0)를 나타냅니다.
Reverb Zone: 리버브 존으로 보내지는 시그널의 양을 나타냅니다.
볼륨 프로퍼티 및 거리/방향 감쇠가 시그널에 우선 적용되며, 따라서 직접 시그널과 리버브 된 시그널 모두에 영향을 미칩니다. 시그널과 리버브 된 시그널 모두에 영향을 미칩니다.
거리 함수를 수정하려면 커브를 직접 수정하면 됩니다.
자세한 내용은 가이드 커브 편집하기를 보십시오.
오디오 소스 생성(Creating Audio Sources)
오디오 소스는 할당된 Audio Clip 이 없으면 아무 것도 하지 않습니다.
클립은 재생될 실제 사운드 파일입니다.
소스는 해당 클립을 재생/정지하거나, 기타오디오 프로퍼티를 수정하는 컨트롤러 역할을 합니다.
새로운 오디오 소스를 생성하는 방법:
- Unity 프로젝트에 오디오 파일을 임포트합니다. 이 파일이 오디오 클립이 됩니다.
- 오디오 소스 게임 오브젝트를 생성합니다(메뉴:__GameObject__ > Audio > Audio Source).
- 새로운 게임 오브젝트를 선택하고 Component > Audio > Audio Source 를 선택합니다.
- 인스펙터에서 Audio Source 컴포넌트의 Audio Clip 프로퍼티를 찾고 클립을 할당합니다.
이때 프로젝트 창에서 클립을 드래그하거나, 인스펙터 프로퍼티의 오른쪽에 있는 작은 원 아이콘을 클릭한 다음 목록에서 클립을 선택하는 방법을 이용할 수 있습니다.
Note: 에셋 폴더에 있는 하나의 Audio Clip 에 대해서만 Audio Source 를 생성하고 싶은 경우, 해당 오디오 클립을 씬 뷰에 드래그하면 자동으로 Audio Source 컴포넌트가 있는 게임 오브젝트가 생성됩니다.
기존 오디오 소스가 없었다면 오디오 클립을 기존 게임 오브젝트에 드래그했을 때 클립이 새로운 Audio Source 에 연결됩니다.
해당 오브젝트에 이미 Audio Source 가 있을 경우 새로 드래그 된 클립이 소스가 이미 사용하고 있던 클립을 대체합니다.