이 페이지에서는 웹 플랫폼의 오디오 기능에 대한 정보만 제공합니다. Unity 프로젝트에서 오디오를 사용하는 방법을 알아보려면 오디오 개요를 참조하십시오.
Unity는 플랫폼의 오디오를 관리하기 위해 FMOD를 사용하므로 웹 플랫폼은 기본 기능만 포함하는 제한된 오디오 기능을 지원합니다. FMOD는__ WebGL__웹 브라우저에서 2D 및 3D 그래픽스를 렌더링하는 JavaScript API입니다. Unity 웹 빌드 옵션을 사용하면 콘텐츠를 JavaScript 프로그램으로 퍼블리시할 수 있습니다. 이 프로그램은 HTML5 기술과 WebGL 렌더링 API를 사용하여 Unity 콘텐츠를 웹 브라우저에서 실행합니다. 자세한 정보
See in Glossary API가 지원하지 않는 스레드를 사용합니다. 이러한 이유로 Unity는 브라우저가 오디오 재생 및 믹싱을 처리할 수 있도록 내부 웹 오디오 API를 기반으로 구현을 사용합니다.
참고: Google Chrome의 새로운 자동 재생 정책은 특정 조건에서 오디오 및 동영상의 자동 재생을 방지합니다. 예를 들어 게임이 로드된 직후 일부 배경 음악을 자동으로 재생하도록 설정되어 있을 수 있지만 웹사이트를 클릭하거나 탭하지 않으면 자동으로 재생되지 않습니다. 이 정책을 활성화하거나 비활성화하는 방법에 대한 자세한 내용은 Google Chrome의 Chrome의 자동 재생 정책 기술 자료를 참조하십시오.
Unity 웹은 다음 API 클래스를 지원합니다.
| 클래스 | WebGL 지원 상태 |
|---|---|
| AudioSource | WebGL은 일부 API를 지원합니다. 구체적인 지원 세부 사항은 AudioSource를 참조하십시오. |
| AudioListener | 모든 API가 지원됩니다. |
| AudioClip | WebGL은 일부 API를 지원합니다. 구체적인 지원 세부 사항은 AudioClip을 참조하십시오. |
| AudioMixer | WebGL은 일부 API를 지원합니다. 구체적인 지원 세부 사항은 오디오 믹서를 참조하십시오. |
| SystemInfo.supportsAudio | 브라우저가 WebGL에 대한 오디오 지원을 제공합니다. 따라서 SystemInfo.supportsAudio는 항상 true입니다. |
| Microphone | 지원되지 않음. |
AudioSource API는 다음을 비롯한 기본 포지셔널 오디오 재생을 지원합니다.
Unity WebGL은 다음 AudioSource API를 지원합니다.
| 설정 | 설명 |
|---|---|
| Clip | 다음에 재생할 오디오 클립을 결정합니다. |
| dopplerLevel | AudioSource의 도플러 스케일을 설정합니다. |
| ignoreListenerPause | AudioSource가 AudioListener.pause를 무시하고 오디오를 계속 재생하도록 허용합니다. |
| ignoreListenerVolume | 최종 사용자의 AudioSource 볼륨을 무시합니다. |
| isPlaying |
AudioSource.clip이 재생 중이면 true를 반환합니다. |
| loop | 애플리케이션이 AudioSource.clip을 반복하도록 허용합니다. |
| maxDistance |
AudioSource.clip이 감쇠를 멈추거나 들리지 않게 되는 최대 거리를 설정합니다. |
| minDistance | AudioSource.clip이 더 이상 볼륨을 높이지 않는 최소 거리를 설정합니다. 최소 거리를 넘으면 사운드가 감쇠되기 시작합니다. |
| mute | AudioSource를 음소거합니다. |
| pitch |
AudioSource.clip의 피치를 설정합니다. WebGL은 양의 피치 값만 지원합니다. |
| playOnAwake | 활성 상태일 때 AudioSource를 재생합니다. |
| rolloffMode | 거리에 따른 AudioSource 감쇠를 설정합니다. |
| time | 재생 위치를 초 단위로 설정합니다. |
| timeSamples | PCM(펄스 코드 변조) 샘플의 재생 위치를 설정합니다. |
| velocityUpdateMode | AudioSource가 고정 또는 동적 업데이트 루프에서 업데이트되는지 여부를 설정합니다. |
| volume | AudioSource의 볼륨을 설정합니다(0.0–1.0). |
| Pause |
AudioSource.clip을 일시 정지합니다. |
| Play |
AudioSource.clip을 재생합니다. |
| PlayDelayed | 지정한 지연 시간(초)으로 AudioSource.clip을 재생합니다. |
| PlayOneShot | AudioClip을 재생하고 volumeScale로 AudioSource 볼륨을 조정합니다. |
| PlayScheduled | 지정된 시간에 AudioSource를 재생합니다. |
| SetScheduledEndTime | 예약된 AudioSource.clip이 종료되는 시간을 설정합니다. |
| SetScheduledStartTime | 예약된 AudioSource.clip이 시작되는 시간을 설정합니다. |
| Stop |
AudioSource.clip 재생을 정지합니다. |
| UnPause | 일시 정지된 AudioSource.clip을 해제합니다. |
| PlayClipAtPoint | 월드 공간의 특정 위치에서 AudioSource.clip을 재생합니다. |
Unity WebGL은 대부분의 브라우저에서 지원하는 AAC 포맷의 AudioClip 파일을 임포트합니다. Unity WebGL은 다음 AudioClip API를 지원합니다.
| 프로퍼티 | 설명 |
|---|---|
| length | 초 단위의 AudioClip 길이입니다. |
| loadState | AudioClip과 연결된 오디오 데이터의 현재 로드 상태를 반환합니다. |
| samples | 샘플 단위의 AudioClip 길이입니다. |
| loadType | 클립의 로드 유형입니다. 인스펙터에서 AudioClip 로드 유형을 설정할 수 있습니다. |
| 메서드 | 설명 | 추가 정보 |
|---|---|---|
| AudioClip.Create | 지정된 이름과 길이의 AudioClip을 만듭니다. | Unity WebGL은 AudioClip.Create를 부분적으로 지원합니다. 브라우저는 동적 스트리밍을 지원하지 않으므로 AudioClip.Create를 사용하려면 Stream을 false로 설정합니다. |
| AudioClip.SetData | AudioSource.clip의 샘플 데이터를 설정합니다. | Unity WebGL은 AudioClip.SetData를 부분적으로 지원합니다. 이 방법은 Load Type이 Decompress on Load로 설정된 압축된 오디오 파일에만 사용할 수 있습니다. 압축된 오디오를 참조하십시오. |
| AudioClip.GetData | AudioSource.clip에서 샘플 데이터가 포함된 배열을 가져옵니다. | Unity WebGL은 AudioClip.GetData를 부분적으로 지원합니다. 이 방법은 Load Type이 Decompress on Load로 설정된 압축된 오디오 파일에만 사용할 수 있습니다. 압축된 오디오를 참조하십시오. |
참고: Linux에서 오디오 클립을 지원하려면 ffmpeg 패키지가 설치되어 있는지 확인하십시오.
Unity 웹은 일부 오디오 믹서 에셋의 기능을 지원합니다.
웹의 오디오 믹서로 다음을 수행할 수 있습니다.
참고: 볼륨은 웹에서 유일하게 변경할 수 있는 프로퍼티입니다. 다른 프로퍼티와 음향 효과는 지원되지 않습니다.
Unity에서 WebGL과 함께 압축된 오디오를 사용하려면 AudioClip loadType을 다음 옵션 중 하나로 설정하십시오.
| 압축 방식 | 설명 | 고려 사항 |
|---|---|---|
| CompressedInMemory | 디스크의 오디오를 압축하고, 애플리케이션 메모리에 로드한 후 압축된 상태를 유지합니다. | 압축된 오디오는 지연이 발생할 수 있으며 오디오 재생 시 정밀도가 떨어집니다. 하지만 압축된 오디오는 압축 해제된 오디오보다 애플리케이션에서 메모리를 더 적게 사용합니다. CompressedInMemory는 정밀도에 영향을 받지 않는 오디오(예: 배경 음악)에 사용하는 것이 가장 좋습니다. |
| DecompressOnLoad | CompressedInMemory와 마찬가지로 디스크의 오디오를 압축하고, 애플리케이션 메모리에 로드할 때 압축을 해제합니다. | 압축 해제된 오디오는 압축된 오디오에 비해 상당한 양의 메모리를 사용하지만 지연 시간이 더 짧고 오디오 유연성이 더 높습니다. 정밀도에 영향을 받는 오디오(예: 캐릭터 다이얼로그 또는 음향 효과)에는 DecompressedOnLoad를 사용하십시오. |
보안상의 이유로 최종 사용자가 마우스 클릭, 터치 이벤트 또는 키 누르기를 통해 애플리케이션 웹 페이지와 상호 작용할 때까지 브라우저에서 오디오 재생을 허용하지 않습니다. 로딩 화면을 사용하면 최종 사용자가 애플리케이션과 상호 작용하고 메인 콘텐츠가 시작되기 전에 오디오 재생을 시작할 수 있습니다.