버전
Wwise Unity Integration Documentation
|
Unity 통합은 Unity Scene GameObject에서 직접 사용할 수 있는 Wwise 전용 컴포넌트를 제공합니다. 이 컴포넌트는 대부분의 사운드 디자인 상황에 필요한 필요를 채워줍니다. 해당 컴포넌트는 커스텀 C# 스크립트를 사용하지만, 코드 작업 없이 퍼블릭 속성을 편집할 수 있습니다.
Unity GameObject에 Wwise 컴포넌트를 추가하는 방법:
도움말: | 컴포넌트 검색란에 'ak'를 입력하면 모든 Wwise 컴포넌트를 담은 목록에 빠르게 접근할 수 있습니다. |
Wwise Picker에서 Inspector나 로드된 씬의 Hierarchy에 열거된 게임 오브젝트로 Wwise 오브젝트를 드래그하면 게임에 컴포넌트를 직접 추가할 수 있습니다.
WwiseGlobal 오브젝트는 Wwise Sound Engine의 Initializing과 Terminating 스크립트를 담은 GameObject 입니다. Editor 작업 과정에서 이 오브젝트는 모든 씬에 추가되어 Editor에서 알맞게 미리볼 수 있습니다. 게임에서는 첫 번째 씬에서 단 하나의 인스턴스가 생성되며 게임 내내 유지됩니다. 초기화 스크립트에는 커스터마이징할 수 있는 옵션이 몇 가지 있습니다.
이 작동 방식을 비활성화하려면 Edit > Wwise Settings를 사용하여 Create WwiseGlobal GameObject를 비활성화하세요. 이 경우 게임에서 지속적으로 유지될 오브젝트에 초기화 스크립트를 여러분이 직접 추가하셔야 합니다.
위치 지정이 작동하려면 모든 씬에서 Ak Audio Listener 스크립트가 메인 카메라에 연결되어야 합니다. 기본적으로 리스너는 메인 카메라에 자동으로 추가됩니다. 이 작동 방식을 비활성화하려면 Edit > Wwise Settings를 사용하여 Automatically add Listener to Main Camera를 비활성화하세요.
Unity 통합은 코드를 최소화하여 사용할 수 있도록 가장 흔한 클래스들도 제공합니다.
AK.Wwise.AuxBus
AK.Wwise.Bank
AK.Wwise.CallbackFlags
AK.Wwise.Event
AK.Wwise.RTPC
AK.Wwise.State
AK.Wwise.Switch
AK.Wwise.Trigger
AK.Wwise.AcousticTexture
C# API로 네이티브 WAAPI 클라이언트를 사용하면 Unity 안에서 WAAPI에 연결할 수 있습니다. 현재 Windows와 macOS에서 사용할 수 있습니다. Wwise Authoring API(와이즈 저작 API)는 JSON 객체를 통해 메시지를 전송합니다. Unity에서 클라이언트는 문자열을 사용하여 구현되었습니다. 자신이 선호하는 방법으로 유효한 JSON 문자열을 생성한 후 WAAPI 클라이언트에 제공할 수 있습니다.
다음 네 가지 방법을 통해 게임에 사운드를 추가할 수 있습니다.
AK.Wwise.Event.Post()
를 호출하세요.AkSoundEngine.PostEvent()
를 호출하세요.Unity Timeline 기능을 위한 Wwise 이벤트를 트리거하고 Wwise RTPC 값을 설정하는 맞춤 Wwise 트랙이 있습니다.
Unity 통합에는 Wwise Authoring(저작) 도구와 연결하는 데 사용할 수 있는 간단한 WAAPI 클라이언트가 들어 있습니다.
대부분의 Wwise SDK 함수는 AkSoundEngine
클래스를 통해 Unity에서 사용할 수 있습니다. C++의 네임스페이스 AK::SoundEngine
, AK::MusicEngine
등을 대체한다고 생각하면 됩니다. 원본 SDK와 비교하여 API 바인딩에서 변경한 내용은 API 변경 및 제한 사항 를 참고하세요. 더욱 복잡한 상황의 경우 코드에서 Wwise 함수를 호출해야 합니다. API에서 모든 함수 안에 있는 GameObjectID
는 Unity GameObject 개념으로 대체됩니다. AkGameObj 컴포넌트를 수동으로 추가지 않은 경우 런타임에서 자동으로 해당 GameObject에 추가됩니다.
네이티브 Wwise API에서는 문자열이나 ID를 사용하여 Wwise 프로젝트에서 이벤트나 명명된 오브젝트를 트리거할 수 있습니다. Wwise_IDs.h
파일을 Wwise_IDs.cs
로 변경하면 C::에서도 그렇게 할 수 있습니다. Assets > Wwise > Convert Wwise SoundBank IDs를 클릭하세요. 이 작업을 위해서는 Python(파이썬)이 설치되어 있어야 합니다.
AkMIDIPostArray
클래스의 AkMIDIPost
멤버를 채워 넣거나 다음 메소드를 호출하면 Wwise에 MIDI를 전송할 수 있습니다.
AkMIDIPostArray.PostOnEvent()
AkSoundEngine.PostMIDIOnEvent()
AK.Wwise.Event.PostMIDI()
다음은 사운드 엔진에 MIDI 메시지를 전송하는 기본 스크립트입니다.
오디오 입력 음원 플러그인은 C# 스크립트를 통해 사용할 수 있습니다. Wwise SDK 설명서에서 오디오 입력 음원 플러그인을 참고하세요.
다음은 오디오 입력 음원 플러그인에 시험음을 전송하는 기본 스크립트입니다.
기본적으로 AkGameObj
컴포넌트는 특정한 Unity gameObject
에 연결되어 있으며 트랜스폼(transform) (필요시 상쇄값도 포함)을 사용하여 전체 위치 지정을 설정합니다. 이 방법은 보통 1인칭 슈팅 게임과 같은 수많은 게임에 적합합니다. 하지만 3인칭 게임과 같이 맞춤 카메라 각도가 있는 게임의 경우, Unity의 메인 카메라와 같이 한 게임 오브젝트에 오디오 리스너(audio listener)를 연결해서는 위치 지정의 두 방면 (거리 감쇠와 공간화)를 다루기가 어렵습니다. 게임에 따라 플레이어가 맞춤화된 다른 위치 지정을 경험하도록 하고자 할 수 있습니다.
이런 경우를 위해 AkGameObj
컴포넌트 클래스는 Unity 사용자가 위치 지정을 오버라이드할 수 있게 해줍니다. Unity에서는 세 가지 가상 메소드인 GetPosition()
, GetForward()
, GetUpward()
를 통해 AkGameObj
로부터 하위 클래스를 만들고, 이 하위 클래스 컴포넌트를 사용해서 Unity gameObjects
의 위치 지정을 맞춤화할 수 있습니다.
다음은 커스텀 컴포넌트를 사용하여 기본 AkAudioListener
작동 방식을 덮어쓰는 방법을 보여주는 간단한 예시입니다. Wwise를 사용하여 통합된 3인칭 프로젝트의 경우 기존의 AkAudioListener
와 연관된 AkGameObj
를 제거하세요. 그리고 다음 스크립트를 MainCamera 오브젝트에 연결하고 AkAudioListener
를 연결하세요. 마지막으로 오디오 리스너의 위치가 따를 대상 Unity gameObject
(예를 들어 플레이어 아바타와 같이)를 지정하세요. 이렇게 하면 모든 방사체의 거리 감쇠가 선택된 Unity gameObject
의 위치를 청자의 위치 (화면 안의 거리 리스너)로 사용하며, 모든 방사체의 거리는 여전히 메인 카메라의 방향을 청자의 방향 (화면 밖의 방향 리스너)으로 설정합니다.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요