Version: 2020.2
언어: 한국어
Unity 5.0의 애니메이션
Unity 5.0에서 베이크된 데이터

Unity 5.0의 오디오

다음은 프로젝트에서 오디오 기능을 사용하고, Unity 4에서 Unity 5로 프로젝트를 업그레이드할 경우 주의해야 하는 참고 사항입니다.

AudioClips

AudioClip에 많은 변경 사항이 적용되었습니다. 첫째, 에셋에는 더 이상 3D 플래그가 없습니다. 이 플래그는 공간 블렌드 슬라이더 형태로 AudioSource로 이동되어 런타임 시점에 2D에서 3D로 사운드를 모핑하는 데 사용할 수 있습니다. 이전 프로젝트는 씬의 게임 오브젝트에서 클립이 할당된 AudioSource의 공간 블렌드 파라미터가 AudioClip의 이전 3D 플래그에 따라 설정되는 방법으로 임포트됩니다. 동적으로 클립을 소스에 할당하는 스크립트에서는 자명한 이유로 이렇게 할 수 없으므로 수동으로 수정해야 합니다.

이전 3D 프로퍼티에 대한 기본 설정은 참(true)이였지만, 새 시스템에서는 공간 블렌드 파라미터의 기본값은 2D로 설정됩니다.

마지막으로, 이제는 AudioClip을 동시에 2개 이상 편집할 수 있습니다.

포맷(Format)

포맷 프로퍼티의 명명 규칙은 플랫폼별로 상이한 특정 파일 포맷이 아닌 데이터 저장 메서드를 나타내도록 변경되었습니다. 따라서 지금부터 압축되지 않은 것은 원시 샘플 데이터를 의미하고, 압축된 것은 플랫폼에 가장 적합한 손실 있는 압축 메서드를 의미하며, ADPCM은 노이즈(발걸음, 충격, 무기 소리 등)가 많이 포함되고 많이 재생되는 자연 오디오 신호에 가장 적합한 CPU 사용이 적은 압축 메서드를 의미합니다.

배경에서 오디오 데이터 미리 로드 및 로드

AudioClip에는 오디오 데이터 미리 로드 여부를 결정하는 옵션을 제공하는 새로운 기능이 추가되었습니다. AudioClip의 프로퍼티는 실제 오디오 데이터 로딩 상태에서 분리되고 언제든지 쿼리될 수 있으므로, 이제 필요할 때 즉시 로드하여 AudioClip의 메모리 사용량을 낮게 유지할 수 있습니다. 또한 AudioClip은 메인 게임 스레드를 차단하고 프레임 드롭을 초래하지 않으며, 배경에서 오디오 데이터를 로드할 수 있습니다. 물론 스크립팅 API를 통해 로드 프로세스를 제어할 수 있습니다.

다중 편집

이제 모든 AudioClip의 다중 편집이 가능합니다.

모노로 강제(Force to Mono)

Force To Mono 옵션은 결과물의 피크 일반화를 수행합니다.

GetData/SetData

이 두 API 호출은 오디오 데이터를 압축하지 않고 PCM으로 저장하거나 로드 시에 압축을 푸는 클립에서만 지원됩니다. 과거에는 많은 클립에서 지원되었지만 대상 플랫폼에 의존하고 에디터와 스탠드얼론 플레이어에서 각기 다르게 동작했기 때문에 패턴이 그다지 분명하지 않았습니다. 새로운 기능으로, 트래커 파일을 PCM 데이터로 메모리에 압축을 출 수 있기 때문에 데이터 GetData/SetData를 트래거 파일에도 사용할 수 있습니다.

AudioSource 일시중지 동작

이제 Unity5의 Play 호출과 PlayOneShot 호출 일시중지 동작이 같아졌습니다. AudioSource를 일시중지하면 두 가지 방법으로 모두 재생된 음성이 일시중지되고 Play 또는 PlayOneShot을 호출하면 두 가지 방법으로 재생된 음성의 AudioSource의 일시정지도 해제됩니다.

할당된 클립을 재생하지 않고 AudioSource의 일시정지를 해제할 수 있도록(재생 중인 원샷 음성이 있는 경우에 유용) 새로운 함수인 AudioSource.Unpause()가 추가되었습니다.

오디오 믹서

AudioMixer는 Unity 5의 새로운 기능으로, 오디오 데이터를 복잡한 경로를 통해 AudioSource에서 효과를 적용할 수 있는 믹스 그룹으로 전송하는 데 사용할 수 있습니다. Audio Filter 컴포넌트와 다른 중요한 차이점 중 하나는 오디오 필터가 AudioSource 각각에 대해 인스턴스화되므로 게임에 필터가 있는 AudioSource의 수가 많거나 스크립트에서 단순히 게임 오브젝트가 포함된 여러 인스턴스만 만드는 경우 CPU가 더 많이 사용됩니다. 이제 믹서를 사용하여 효과가 동일한 그룹을 설정하고 간편하게 공통 효과를 통해 AudioSource에서 오디오를 전달할 수 있어 CPU 사용량이 감소합니다.

믹서는 현재 스크립트 기반 효과를 지원하지 않지만, 믹서에는 개발자가 다른 내장된 효과와 원활하게 통합되는 고성능 효과를 쓰기 위해 사용할 수 있는 새로운 네이티브 오디오 플러그인 API가 있습니다.

AudioSettings

오디오 시스템 설정 방법이 변경되었습니다. 스피커 모드 및 DSP 버퍼 크기(예: 지연 속도)를 설정하는 전반적인 설정은 오디오 프로젝트 설정에서 계속 설정해야 하며, 이제는 실제 및 가상 음성 카운트도 설정할 수 있습니다. 실제 음성 카운트는 동시에 들을 수 있는 음성의 수를 지정하므로 게임의 전체적인 CPU 사용량에 큰 영향을 미칩니다. 과거에 이 카운트는 32로 하드코딩되고 일부 플랫폼별 예외가 있었습니다. 재생 중인 음성이 이 수를 초과하는 경우 가장 작게 들리는 음성은 더 크게 들리는 다른 음성의 재생이 멈출 때까지 보류됩니다. 이런 음성은 재생되지 않고 우회되며, 중지되지 않고 다시 사용 가능한 대역폭이 생길 때까지 비활성화될 뿐입니다. 가상 음성 카운트는 관리 가능한 총 음성 수를 정의하므로, 재생 중인 음성 수가 이 값을 초과하면 가장 작게 들리는 음성이 중지됩니다.

AudioSettings.outputSampleRate와 AudioSettings.speakerMode에서도 계속 읽어올 수 있지만, 세터는 이제 SetDSPBufferSize 함수와 함께 지원이 중단되었습니다. 대신, 런타임 시점에 수행되어야 하는 오디오 설정 변경에는 이제 AudioConfiguration이라는 구조를 사용할 수 있습니다. 이 구조는 오디오 출력 장치에서 액티브 설정을 반환하는 AudioSettings.GetConfiguration()을 통해 얻을 수 있습니다. 이 구조를 변경하고 변경 사항 적용 시도의 성공 여부에 따라 불 결과를 반환하는 AudioSettings.Reset()을 통해 변경 사항을 적용할 수 있습니다.

오디오 설정이 스크립트의 AudioSettings.Reset()을 통해 변경되거나 오디오를 지원하는 HDMI 모니터나 외장 사운드 카드 또는 USB 헤드셋에 연결하는 등의 외부 이벤트로 인해 변경될 때마다 사용자 정의 콜백인 AudioSettings.OnAudioConfigurationChanged(bool deviceChanged)가 호출됩니다. 이 콜백의 인수인 deviceChanged는 변경 사항이 AudioSettings.Reset() 호출에 기인한 경우 거짓(false)이고 변경인 경우 외부 장치 변경(또는 사용 중인 오디오 장치의 샘플 레이트 변경)에 기인한 경우 참(true)입니다. 콜백을 사용하여 생성된 PCM 클립 같은 일시적인 사운드를 다시 생성하거나 오디오 상태를 복원하거나 AudioSettings.Reset()을 호출하여 오디오 설정을 더 조정할 수 있습니다.

Unity 5.0의 애니메이션
Unity 5.0에서 베이크된 데이터