유니티 공식 홈페이지에 게재된 'Unity 5.0 Uprade Guide'의 일부를 번역한 내용입니다.

 (해당 블로그 글은 향후 업데이트될 수 있습니다.)



Audio



AudioClips 

 오디오 클립(AudioClip)에서 많은 것들이 변경되었습니다. 먼저 오디오 클립 에셋에 있었던 3D플래그가 사라집니다. 대신에 오디오 소스(AudioSource)에 Spatial Blend 슬라이더라는 것이 새로 생겼습니다. 이것을 이용하여 이젠 실시간으로 2D에서 3D로 사운드 모핑하는 것이 가능해졌습니다. 이전 버전의 프로젝트를 업그레이드를 한다면, 씬 내에서 어떤 오디오 클립을 가진 게임오브젝트의 오디오 소스가 해당 클립의 예전 3D플래그에 따라 현 Spatial Blend parmeter를 설정하는 방식으로 임포트될 것입니다. 물론 오디오 소스에 동적으로 오디오 클립을 할당하는 스크립트 경우에는 이것이 적용되지 않으며, 직접 수동으로 고쳐야 할 것입니다.     


 예전에 3d 속성이 true가 기본(디폴트)인 반면, 새로운 오디오 시스템에서 Spatial Blend 파라미터는 2D가 기본입니다.

 

 끝으로, 이제 오디오 클립은 다중 편집(multi-edited)이 가능합니다.



Format 

 오디오 포멧 속성의 네이밍(naming)이 변경되어서, 이제는 각 플랫폼에 따르는 특정 파일 포멧을 나타낸다기 보다는 어떤 방식으로 데이터가 저장되어 있는지를 나타냅니다. 따라서 이제부터는 Uncompressed는 로우(raw) 샘플 데이터를 의미하고, Compressed는 해당 플랫폼에 가장 적합한 손실 압축 방식을 의미합니다. ADPCM은 꽤많은 잡음(발소리, 충돌소리, 무기소리 등)을 포함하고 큰 사이즈를 가진 자연 음성신호들에 가장 잘 맞는 가벼운(CPU 면에서) 압축 방식을 나타냅니다.   



Preloading and loading audio data in the background

 오디오 클립(AudioClip)의 새로운 특징 중 하나는 오디오 데이터를 프리로드(Preload)의 여부를 선택할 수 있는 옵션이 생겼다는 것입니다. 이제 오디오 클립의 모든 속성은 실제 오디오 데이터 로딩 상태에서 분리되어 언제든지 쿼리될 수 있습니다. 따라서 이제는 요구가 있을 때 로딩할 수도 있게 되면서 적은 메모리 사용량을 유지하는데 도움이 됩니다. 

 뿐만 아니라 오디오 클립은 백그라운드에서 메인 스레드에 대한 블럭킹 및 프레임 하락 현상없이 오디오 데이터를 로딩할 수 있습니다. 물론 로딩 과정은 스크립트 API에 의해 제어될 수 있습니다.



Multi-editing

 모든 오디오 클립은 다중 편집(multi-edited)이 가능합니다.



Force to Mono

 Force to Mono 옵션은 이제 다운믹스에서 peak-normalization을 수행하게 됩니다.



GetData/SetData 

 이 API 호출은 PCM 같은  비압축 오디오 데이터를 저장하거나 로드 시 압축해제를 수행하는 클립에 한해서 지원됩니다. 과거에는 더 많은 클립들이 이것을 지원했지만, 타겟 플랫폼에 의존적이고 에디터 및 독립 플레이어에서 다른 행동을 보였기 때문에 패턴이 매우 명확하지 않았습니다. 한가지 새로운 것은 트래커 파일 역시 PCM 데이터처럼 메모리로 압축해제 될 수 있으므로 동일하게 이 함수들을 사용할 수 있다는 점입니다.



AudioSource pause behaviour 

 오디오 소스 정지 기능이 Play 와 PlayOneShot 호출될 때 일관되게 작동합니다. 오디오 소스의 정지는 두 방법으로 재생된 소리들을 정지시키고, Play 또는 PlayOneShot 호출은 두 방법으로 재생된 소리들을 정지해제(unpause)합니다.


해당 클립의 재생없이 오디오소스를 정지해제(unpause)할 수 있도록 하기 위해서 새로운 함수  AudioSource.Unpause() 를 추가했습니다.



Audio mixer

 오디오 믹서(AudoMixer)는 유니티 5의 새로운 기능 중 하나입니다. 이것을 통해 오디오 소스(AudioSource)로부터 여러 효과들을 적용할 수 있는 믹스 그룹으로 오디오 데이터를 복잡한 형태로의 전달이 가능합니다. 오디오 필터(AudioFilter) 컴포넌트와의 중요한 차이점은 오디오 필터의 경우에는 오디오 소스 당 인스턴싱되기 때문에, 게임에서 많은 오디오 소스를 가지거나 단순히 스크립트에서 이 컴포넌트를 포함한 많은 GameObject 인스턴스를 생성하게 되면 더욱 많은 CPU 비용이 들게 됩니다. 오디오 믹서(AudoMixer)에서는 동일한 이펙트를 적용하기 위한 소스들에 대해서 그룹을 설정할 수 있으므로 공유된 이펙트를 통해서 오디오 소스의 데이터를 전달하게 됩니다. 따라서 더 저렴한 CPU 비용이 듭니다.


 현재 오디오 믹서는 스크립트 기반 이펙트를 지원하지 않습니다. 하지만 새로운 네이티브 오디오 플러그인 API를 제공을 통해 개발자들이 고성능 이펙트를 작성하여 다른 빌트-인 이펙트와 함께 자연스럽게 통합할 수 있도록 합니다.



AudioSettings

 오디오 시스템 환경설정 방식이 수정되었습니다. 스피커 모드와 DSP 버퍼 사이즈 세팅과 같은 전체적인 설정은 여전히 audio project settings 를 통해서 설정할 수 있습니다. 또한 추가적으로 이제 real voice count 와 virtual voice count를 설정하는 것도 가능해집니다. real voice count 는 얼마나 많은 소리가 동시에 들리는지를 명시하므로, 게임에서의 전체 CPU 소모량과 연관성을 가지게 됩니다. 이전에는 이것은 특정 플랫폼을 제외하고는 32 로 고정되어 있었습니다. 재생하는 소리의 수가 이 숫자를 초과한 경우, 가장 작게 들리는 소리들은 그 소리가 우세해지거나 아니면 다른 우세했던 소리들이 재생을 멈추기 전까지는 재생이 보류됩니다. 이 소리들은 단순히 재생에서 무시되는 것이며, 다시 대역폭이 있을 때까지 정지되지 않고 단순히 비활성화 상태가 됩니다. virtual voice count 는 전체적으로 얼마나 많은 소리가 관리될 수 있는 지를 정의하게 됩니다. 그래서 재생하는 소리의 갯수가 이 수치를 초과한다면, 가장 작게 들리는 소리들이 멈추게 될 것입니다.


 AudioSettings.outputSampleRate 와 AudioSetting.speakerMode는 여전히 읽어오기가 가능합니다. 그러나 SetDSPBufferSize 함수같은 세터(setter)들은 이제 사라질 예정(deprecated) 입니다. 대신 런타임 시 오디오 환경의 변화를 줄 필요가 있을 때에는 AudioConfiguration이라는 새로운 구조체를 사용할 수 있게 되었습니다. 이것은 AudioSettings.GetConfiguration()를 통해서 접근할 수 있으며, 오디오 아웃풋 디바이스의 활성화된 설정을 그대로 리턴해줍니다.  AudioConfiguration 을 통해서 변경하고 AudioSettings.Reset() 을 통해서 변경사항을 적용하며, 적용 성공/실패 여부에 따라 불리언 값을 리턴할 것입니다.


 AudioSetting.Reset()이 스크립트를 통해 호출되거나 또는 오디오가 지원되는 HDMI 모니터, 외부사운드 카드, USB 헤드셋 등을 꼽으면서 발생하는 외부 이벤트로 인해서 오디오 설정에 변경이 일어나면, 유저-정의 콜백 AudioSetting.OnAudioConfigurationChanged(bool deviceChanged) 함수가 invoke됩니다. deviceChanged 인자는 AudioSetting.Reset()에 의한 것이면 fase, 외부 디바이스 변경에 의한 것이면 true 일 것입니다. (이것은 사용 중인 오디오 디바이스의 샘플 속도도 변경할 수 있습니다.) 이 콜백 함수를 통해 사용자는 생성된(generated) PCM 클립과 같은 휘발성 사운드를 재생성하고, 오디오 상태를 복원하며 AudioSetting.Reset()호출을 통하여 오디오 설정을 적용할 수 있습니다.


글 내용과 관련하여 문의사항이 있으시면 댓글을 남겨주세요, 

감사합니다.


2015/03/12 - [Unity] - 유니티5 업그레이드 가이드6 - Shaders


2015/03/11 - [Unity/Unity 5] - 유니티5 업그레이드 가이드5 - Physics


2015/03/10 - [Unity/Unity 5] - 유니티5 업그레이드 가이드4 - Plugins & Baked Data format changes


2015/03/06 - [Unity/Unity 5] - 유니티5 업그레이드 가이드2 - Animation


2015/03/06 - [Unity/Unity 5] - 유니티5 업그레이드 가이드1 - AI



Posted by 흑 기사
,