목차

Wwise Unity 통합 사용하기

이 통합은 코드를 사용하지 않고도 씬(Scene)에서 직접 쓸 수 있는 가장 흔히 사용되는 몇 가지 컴포넌트를 제공합니다.

  • AkAmbient
    Use this component to attach a Wwise Event to any object in a scene. The sound can be started at various moments, dependent on the selected Unity trigger. This component is more useful for ambient sounds (sounds related to scene-bound objects) but could also be used for other purposes. Since AkAmbient has AkEvent as its base class, it features the play/stop, play multiple, stop multiple and stop all buttons for previewing the associated Wwise event. . 인스펙터에서 AkAmbient 사용하기 를 참고하세요.
  • AkAudioListener
    Add this script on the game object that represent a listener. This is normally added to the Camera object or the Player object, but can be added to any game object when implementing 3D busses. isDefaultListener determines whether the game object will be considered a default listener - a listener that automatically listens to all game objects that do not have listeners attached to their AkGameObjListenerList's.
  • AkBank
    Loads and unloads a SoundBank at a specified moment. Vorbis sounds can be decompressed at a specified moment using the decode compressed data option. In that case, the SoundBank will be prepared.
  • AkEmitterObstructionOcclusion
    Obstructs/Occludes the emitter of the current game object from its listeners if at least one object is between them.
  • AkEnvironment
    Use this component to define a reverb zone. This needs to be added to a collider object to work properly. 인스펙터에서 AkEvironment와 AkEvironmentPortal 사용하기 (Reverb Zone).
  • AkEnvironmentPortal
    Use this component to define an area that straddles two different AkEnvironment's zones and allow mixing between both zones. 인스펙터에서 AkEvironment와 AkEvironmentPortal 사용하기 (Reverb Zone).
  • AkEvent
    Wwise Event와 이를 Unity에서 트리거해야 할 시기를 인지하는 헬퍼 클래스입니다. 인스펙터에서 AkAmbient 사용하기 를 참고하세요.
  • AkGameObj
    This component represents a sound object in your scene tracking its position and other game syncs such as Switches, RTPC and environment values. You can add this to any object that will emit sound, and it will be added to any object that an AkAudioListener is attached to. Note that if it is not present, Wwise will add it automatically, with the default values, to any Unity Game Object that is passed to Wwise.
  • AkRoom
    An AkRoom is an enclosed environment that can only communicate to the outside/other rooms with AkRoomPortals.
  • AkRoomPortal
    An AkRoomPortal can connect two AkRoom components together.
  • AkRoomPortalObstruction
    Obstructs/Occludes the spatial audio portal of the current game object from the spatial audio listener if at least one object is between them.
  • AkSpatialAudioEmitter
    Add this script on the GameObject which represents an emitter that uses the Spatial Audio API.
  • AkSpatialAudioListener
    Add this script on the game object that represent a listener. This is normally added to the Camera object or the Player object, but can be added to any game object when implementing 3D busses. isDefaultListener determines whether the game object will be considered a default listener - a listener that automatically listens to all game objects that do not have listeners attached to their AkGameObjListenerList's.
  • AkState
    This will call AkSoundEngine.SetState() whenever the selected Unity event is triggered. For example this component could be set on a Unity collider to trigger when an object enters it.
  • AkSurfaceReflector
    This component will convert the triangles of the GameObject's geometry into sound reflective surfaces.
  • AkSwitch
    This will call AkSoundEngine.SetSwitch() whenever the selected Unity event is triggered. For example this component could be set on a Unity collider to trigger when an object enters it.
참고:

WwiseGlobal 오브젝트

WwiseGlobal 오브젝트는 Wwise Sound Engine의 Initializing과 Terminating 스크립트를 담은 GameObject 입니다. Editor 작업 과정에서 이 오브젝트는 모든 씬에 추가되어 Editor에서 알맞게 미리볼 수 있습니다. 게임에서는 첫 번째 씬에서 단 하나의 인스턴스가 생성되며 게임 내내 유지됩니다. 초기화 스크립트에는 커스터마이징할 수 있는 옵션이 몇 가지 있습니다.

이 작동 방식을 비활성화하려면 Edit > Wwise Settings를 사용하여 "Create WwiseGlobal GameObject"를 선택 해제하세요.

Main Camera에서의 리스너

위치 지정이 작동하려면 모든 씬에서 Ak Audio Listener 스크립트가 메인 카메라에 연결되어야 합니다. 기본적으로 리스너는 메인 카메라에 자동으로 추가됩니다. 이 작동 방식을 비활성화하려면 Edit->Wwise Settings를 사용해서 "Automatically add Listener to Main Camera"를 선택 해제하세요.

Wwise Type

이 통합은 코드를 최소화하여 사용할 수 있는 가장 흔한 클래스도 제공합니다.

  • AK.Wwise.AuxBus

  • AK.Wwise.Bank

  • AK.Wwise.CallbackFlags

  • AK.Wwise.Event

  • AK.Wwise.RTPC

  • AK.Wwise.State

  • AK.Wwise.Switch

  • AK.Wwise.Trigger

참고:

Wwise Authoring API (와이즈 저작 API, WAAPI) 클라이언트

C# API로 네이티브 WAAPI 클라이언트를 사용하면 Unity 안에서 WAAPI에 연결할 수 있습니다. 현재 Windows와 macOS에서 사용할 수 있습니다. Wwise Authoring API(와이즈 저작 API)는 JSON 객체를 통해 메시지를 전송합니다. Unity에서 클라이언트는 문자열을 사용하여 구현되었습니다. 자신이 선호하는 방법으로 유효한 JSON 문자열을 생성한 후 WAAPI 클라이언트에 제공할 수 있습니다.

참고:

게임 오브젝트에 Wwise 사운드 추가하기

다음 네 가지 방법을 통해 게임에 사운드를 추가할 수 있습니다.

  • Wwise Picker 사용하기. 오브젝트에 사운드를 추가하는 가장 간단한 방법입니다. Wwise Picker(와이즈 피커) 창에서 Event를 Unity Viewer(유니티 뷰어)나 Inspector(인스펙터)의 오브젝트로 드래그하세요. 대상 게임 오브젝트에 AkAmbient 컴포넌트가 자동으로 생성됩니다.
  • Add Component 메뉴 사용하기. Unity 게임 오브젝트에 AkAmbient나 AkEvent 컴포넌트를 추가하세요.
  • Wwise Type 사용하기. C# 스크립트에서 AK.Wwise.Event.Post() 를 호출하세요.
  • 스크립트 사용하기. C# 스크립트에서 AkSoundEngine.PostEvent() 를 호출하세요.

인스펙터에서 AkAmbient 사용하기

  • AkAmbient:
    • Trigger On:
      이벤트를 트리거할 수 있는 Unity 이벤트 목록을 제공합니다. 목록에서 제시하지 않은 이벤트도 사용할 수 있습니다. 코드에서 AkSoundEngine.PostEvent를 호출하면 이벤트를 트리거할 수 있습니다. 또한 직접 만든 트리거 코드를 작성하여 동료들이 목록에서 볼 수 있게 할 수도 있습니다. Wwise 이벤트에 새로운 트리거 추가하기 를 참고하세요.
    • Event Name:
      현재 이벤트의 이름을 지정합니다. 이벤트를 선택하려면 현재 이벤트의 이름을 클릭해서 이벤트 선택창을 여세요. 그런 다음 이벤트를 클릭하여 Ok 버튼을 클릭하거나 이벤트를 더블 클릭해서 선택하세요. 또한 Wwise Picker에서 이벤트를 현재 이벤트 이름 위로 드래그하여 새로운 이벤트를 선택할 수도 있습니다.
    • Action On Event:
      Wwise에서 정의된 몇 가지 이벤트 매개 변수를 사용자가 Unity에서 직접 덮어 쓸 수 있게 해줍니다. 이렇게 하면 새로운 이벤트를 만들지 않고 기존의 이벤트를 재사용할 수 있습니다.
      • Action On Event Type:
        이벤트 유형을 덮어 씁니다.
      • Curve Interpolation:
        보간 곡선을 덮어 씁니다.
      • Fade Time:
        사운드의 페이드 시간을 덮어 씁니다.
    • Use Callback:
      게임 오브젝트가 이벤트 콜백에 반응하도록 하는 쉬운 방법을 제공합니다.
      • 게임 오브젝트:
        콜백을 수신할 게임 오브젝트를 말합니다. 게임 오브젝트를 선택하려면 계층 구조에서 게임 오브젝트 입력란으로 게임 오브젝트를 드래그하세요.
      • Callback Function:
        콜백이 발생하면 게임 오브젝트에 의해 호출되는 함수입니다. 함수를 선택하려면 Callback Function 입력란에 함수 이름을 입력하세요.
        이 함수가 작동하려면 게임 오브젝트가 반드시 Callback Function을 컴포넌트로 정의해야 합니다.
        함수를 반드시 void FunctionName(AkEventCallbackMsg in_info)로 정의해야 합니다.
      • Callback Flags:
        Callback Function이 호출되는 시기를 지정하는 플래그를 선택합니다. 동시에 한 개 이상의 플래그를 선택할 수 있습니다. 각 플래그에 대한 더 자세한 정보는 Wwise SDK documentation의 AkCallbackType 목록을 참고하세요.
    • Play / Stop:
      Edit 모드에서 Wwise Event를 미리 보는 데 사용할 수 있습니다.
    • Stop All:
      재생 중인 모든 Wwise 이벤트를 중단합니다.
    • Position Type:
      이벤트의 위치를 오디오 엔진에 전송하는 방법을 정의합니다.
      • Simple_Mode:
        이벤트 위치가 이벤트가 연결된 게임 오브젝트와 동일하게 됩니다.
      • Large_Mode:
        이벤트가 여러 개의 점으로 정의한 다양한 위치를 가질 수 있습니다. 점을 추가하려면 인스펙터에서 Add Positioning 버튼을 클릭하세요. AkAmbient 게임 오브젝트에 하위 게임 오브젝트가 추가되며 일반 트랜스폼 도구를 사용해서 옮길 수 있습니다. 이 모드는 동시에 사운드가 여러 위치에서 들릴 경우 유용합니다. 한 가지 좋은 예로 바다 한 가운데서 들려오는 물 소리가 있습니다.
      • MultiPosition_Mode:
        이 모드는 동일한 이벤트를 사용하는 AkAmbient의 모든 인스턴스가 단 하나의 사운드 인스턴스만 가지도록 하여 메모리를 절약할 수 있게 해줍니다.
        이 모드를 사용하는 모든 AkAmbient 인스턴스와 동일한 이벤트를 가지는 모든 AKAmbient 인스턴스를 자동으로 감지되며, 같은 사운드를 여러 번 로드하는 대신 동일한 사운드 인스턴스를 사용하게 됩니다.
        이 모드를 사용하며 동일한 이벤트를 가진 모든 AkAmbient 인스턴스는 동일한 트리거를 가집니다 (AkEvent에서 Trigger On을 참고하세요). 그렇기 때문에 한 AkAmbient의 트리거를 변경하면 동일한 이벤트를 사용하는 모든 AkAmbient의 트리거가 자동으로 변경됩니다.
      • Show Attenuation Sphere:
        이벤트가 재생하는 사운드가 들리는 공간을 정의하는 영역을 보여줍니다.
        이 기능이 작동하려면 Wwise 프로젝트의 SoundBank 설정에서 Max Attenuation을 활성화해야 합니다. (Project->Project Settings->Soundbanks->Max attenuation)
        • Dont_Show:
          감쇠 영역을 표시하지 않습니다.
        • Current_Event_Only:
          현재 모드에서 AkSoundEngine.PostEvent 로의 호출 후 재생될 모든 사운드의 감쇠 영역을 보여줍니다.
          Simple_Mode의 경우 게임 오브젝트에서 들리는 사운드의 감쇠 영역만 보여줍니다.
          Large_Mode의 경우 각 지점의 감쇠 영역만 보여줍니다.
          MultiPosition_Mode일 경우 MultiPosition_Mode에서 동일한 이벤트를 가지는 서로 다른 AkAmbient 마다 한 개씩 감쇠 영역을 보여줍니다.
        • All_Events:
          해당 씬에 있는 모든 AkAmbient 인스턴스의 감쇠 영역을 보여줍니다.

Unity Timeline에서 Wwise 사용하기

Unity Timeline 기능에는 Wwise 이벤트를 트리거하고 Wwise RTPC 값을 설정하는 맞춤 Wwise 트랙이 있습니다.

참고:

Unity WAAPI 클라이언트 사용하기

Unity 통합에는 Wwise Authoring(저작) 도구와 연결하는 데 사용할 수 있는 간단한 WAAPI 클라이언트가 들어 있습니다.

참고:

인스펙터에서 AkEvironment와 AkEvironmentPortal 사용하기 (Reverb Zone)

Wwise에서 Reverb Zone은 Environment 또는 Auxiliary Sends 라고 불립니다. Reverb Zone은 잔향 효과 뿐만 아니라 수많은 효과로 사용할 수 있으며 Wwise 프로젝트에서 정의됩니다.

AkEnvironment 컴포넌트는 아주 간단한 환경 구역을 상징합니다. AkEnvironment는 모든 유형의 콜라이더에 연결할 수 있습니다. AkEnvironment를 씬에 추가하는 방법:

  • Wwise Picker 사용하기. AkEnvironment를 추가하는 가장 간단한 방법입니다. Wwise Picker 창에서 Unity 뷰어나 인스펙터의 오브젝트로 AuxBus를 드래그하세요. 그러면 대상 게임 오브젝트에 AkEnvironment 컴포넌트가 자동으로 생성됩니다.
  • "Add Component" 메뉴 사용하기. Unity 게임 오브젝트에 AkEnvironment 컴포넌트를 추가하세요. 인스펙터의 선택 버튼에서 원하는 환경을 선택하세요.
  • 스크립트 사용하기.C# 스크립트에서 언제든지 AkSoundEngine.SetGameObjectAuxSendValues() 를 호출할 수 있습니다.

또한 포털을 사용하면 두 가지 환경 효과를 조합할 수 있습니다. 각 효과의 정도는 게임 오브젝트로부터의 거리에 따라 결정됩니다.
이 기능은 게임 오브젝트가 두 개의 공간 사이나 두 가지 환경을 연결하는 터널에 서 있을 경우 유용합니다.

  • 프로젝트에 환경 포털을 추가하려면 Unity의 메뉴 바에서 GameObject->Wwise->Environment Portal로 이동하세요.

환경과 환경 포털을 사용하려면 환경을 인지하는 AkGameObj 컴포넌트를 가진 게임 오브젝트가 필요합니다.
AkEnvironmentPortal 오브젝트는 이와 겹치는 AkEnvironment 오브젝트를 자동으로 감지합니다. 겹치는 환경은 포털의 인스펙터에서 두 개의 선택 목록에 표시됩니다. 포털에 너무 많은 환경이 겹칠 경우 포털이 조합할 환경을 선택할 수 있습니다.

Wwise에서는 동시에 네 개의 환경만 활성화할 수 있습니다. 이 네 가지 환경은 다음과 같이 선택됩니다.

  • 포털에 연결되어 있으며 우선 순위가 가장 높은 환경은 네 가지 환경이 선택될 때까지 혹은 포털에 연결된 환경이 없을 때까지 선택됩니다.
  • 선택된 네 가지 환경이 없을 경우포털에 연결되지 않은 환경을 다음과 같이 선택합니다.
    • 우선 순위가 가장 높은 환경은 선택된 환경이 네 가지가 될 때까지 선택됩니다. (DefaultExclude Others 플래그가 설정되지 않은 경우).
    • Default 환경은 선택된 환경이 없을 경우에만 선택됩니다.
    • 게임 오브젝트가 Exclude Others 플래그가 설정된 환경 안에 있을 경우 이 환경이 선택되며 다른 모든 환경이 제거됩니다.
  • AkEnvironment 컴포넌트:
    동시에 네 가지 환경만 활성화될 수 있습니다.
    • Priority:
      환경의 우선 순위를 정의합니다.
      숫자가 작을 수록 우선 순위가 더 높습니다.
      게임 오브젝트가 네 개보다 더 많은 환경 안에 있을 경우 우선 순위가 가장 높은 네 가지 환경만 활성화됩니다 (DefaultExclude Others 플래그가 설정되지 않은 경우).
    • Default:
      게임 오브젝트가 이 환경 안에만 있을 경우 활성화되는 기본 환경입니다.
      게임 오브젝트가 기본 환경이 아닌 다른 환경 안에도 있을 경우 우선 순위가 가장 높은 환경 하나만 활성화됩니다.
    • Exclude Others:
      플래그가 설정된 환경은 다른 환경과 겹칠 수 없습니다.
      게임 오브젝트가 Exclude Others 플래그가 설정된 환경 안에 있을 경우 다른 모든 환경이 제거됩니다.
      게임 오브젝트가 Exclude Others 플래그가 설정된 여러 환경 안에 있을 경우 가장 우선 순위가 높은 한 환경만 활성화됩니다.
    • AuxBus Name:
      현재 AuxBus의 이름을 지정합니다. AuxBus를 선택하려면 현재 AuxBus의 이름을 클릭하여 AuxBus picker 창을 여세요. 그런 다음 AuxBus를 클릭하여 Ok 버튼을 클릭하거나 AuxBus를 더블 클릭해서 선택하세요. 또한 Wwise Picker에서 현재 AudioBus의 이름 위로 AuxBus를 드래그하여 새로운 AudioBus를 선택할 수 있습니다.
  • AkEnvironmentPortal 컴포넌트:
    Unity 안에서 환경 포털을 만들려면 GameObject->Wwise->Environment Portal로 이동하세요.
    두 환경 사이에 환경 포털을 배치하면 게임 오브젝트가 포털 안에 있을 경우 효과를 조합할 수 있습니다. 포털이 두 환경과 모두 교차해야만 효과가 조합됩니다.
    각 효과의 정도는 게임 오브젝트로부터의 거리에 따라 결정됩니다. 게임 오브젝트가 효과에 가까울수록 더 많이 적용됩니다.
    • Environment #1:
      포털은 포털을 교차하는 모든 환경을 자동으로 감지합니다. 이 환경 중에서 포털의 음수 쪽 (선택된 축의 반대 방향)에 배치된 환경은 드롭 다운 메뉴에서 사용할 수 있습니다. 이런 식으로 환경을 분류하는 이유는 런타임 때 각 환경의 기여도를 결정하는 데 필요한 계산을 줄이기 위함입니다.
    • Environment #2:
      포털은 포털을 교차하는 모든 환경을 자동으로 감지합니다. 이 환경 중에서 포털의 양수 쪽 (선택된 축과 같은 방향)은 메뉴에서 사용할 수 있습니다. 이런 식으로 환경을 분류하는 이유는 런타임 때 각 환경의 기여도를 결정하는 데 필요한 계산을 줄이기 위함입니다.
    • Axis:
      이 축은 각 환경의 기여도를 찾는데 사용됩니다.
      예를 들어 z축이 선택되었을 경우 x축을 따라 이동하더도 각 환경의 기여도가 바뀌지 않습니다. z축에서의 움직임만 환경의 기여도를 변경합니다.
      이 축은 오브젝트의 공간 안에 있습니다. 그렇기 때문에 포털을 회전하면 축도 함께 회전됩니다.
참고:

C# 코드를 사용하여 사운드 엔진 제어하기

대부분의 Wwise SDK 함수는 AkSoundEngine 클래스를 통해 Unity에서 사용할 수 있습니다. C++의 네임스페이스 AK::SoundEngine, AK::MusicEngine 등을 대체한다고 생각하시면 됩니다. 원본 SDK와 비교하여 API 바인딩에서 변경한 내용은 API 변경 및 제한 사항 를 참고하세요. 더욱 복잡한 상황의 경우 코드에서 Wwise 함수를 호출해야 합니다. API에서 모든 함수 안에 있는 GameObjectID 는 Unity 개념의 GameObject로 대체됩니다. 런타임 때 AkGameObj 컴포넌트는 수동으로 추가지 않은 경우 자동으로 이 GameObject에 추가됩니다.

Event와 Bank에 문자열이 아닌 숫자 ID 사용하기.

네이티브 Wwise API에서는 문자열이나 ID를 사용하여 Wwise 프로젝트에서 이벤트나 명명된 오브젝트를 트리거할 수 있습니다. Wwise_IDs.h 파일을 Wwise_IDs.cs 로 변경하면 C#에서도 그렇게 할 수 있습니다. Assets > Wwise > Convert Wwise SoundBank IDs를 클릭하세요. 그렇게 하려면 Python(파이썬)이 설치되어 있어야 합니다.

Wwise에 MIDI 전송하기.

AkMIDIPostArray 클래스의 AkMIDIPost 멤버를 입력하거나 다음 메소드를 호출하면 Wwise에 MIDI를 전송할 수 있습니다.

  • AkMIDIPostArray.PostOnEvent()
  • AkSoundEngine.PostMIDIOnEvent()
  • AK.Wwise.Event.PostMIDI()

다음은 사운드 엔진에 MIDI 메시지를 전송하는 기본 스크립트입니다.

public class MyMIDIBehaviour : UnityEngine.MonoBehaviour
{
    public AK.Wwise.Event SynthEvent;

    private void Start()
    {
        AkMIDIPostArray MIDIPostArrayBuffer = new AkMIDIPostArray(6);
        AkMIDIPost midiEvent = new AkMIDIPost();

        midiEvent.byType = AkMIDIEventTypes.NOTE_ON;
        midiEvent.byChan = 0;
        midiEvent.byOnOffNote = 56;
        midiEvent.byVelocity = 127;
        midiEvent.uOffset = 0;
        MIDIPostArrayBuffer[0] = midiEvent;

        midiEvent.byOnOffNote = 60;
        MIDIPostArrayBuffer[1] = midiEvent;

        midiEvent.byOnOffNote = 64;
        MIDIPostArrayBuffer[2] = midiEvent;

        midiEvent.byType = AkMIDIEventTypes.NOTE_OFF;
        midiEvent.byOnOffNote = 56;
        midiEvent.byVelocity = 0;
        midiEvent.uOffset = 48000 * 8;
        MIDIPostArrayBuffer[3] = midiEvent;

        midiEvent.byOnOffNote = 60;
        MIDIPostArrayBuffer[4] = midiEvent;

        midiEvent.byOnOffNote = 64;
        MIDIPostArrayBuffer[5] = midiEvent;

        SynthEvent.PostMIDI(gameObject, MIDIPostArrayBuffer);
    }
}

Unity에서 오디오 입력 음원 플러그인 사용하기.

오디오 입력 음원 플러그인은 C# 스크립트를 통해 사용할 수 있습니다. Wwise SDK 설명서에서 오디오 입력 음원 플러그인을 참고하세요.

다음은 오디오 입력 음원 플러그인에 시험음을 전송하는 기본 스크립트입니다.

public class MyAudioInputBehaviour : UnityEngine.MonoBehaviour
{
    public AK.Wwise.Event AudioInputEvent;
    public uint SampleRate = 48000;
    public uint NumberOfChannels = 1;
    public uint SampleIndex = 0;
    public uint Frequency = 880;
    private bool IsPlaying = true;

    // 오디오 샘플을 입력하는 콜백 - 이 함수는 각 채널에서 각 프레임마다 호출됩니다.
    bool AudioSamplesDelegate(uint playingID, uint channelIndex, float[] samples)
    {
        for (uint i = 0; i < samples.Length; ++i)
            samples[i] = UnityEngine.Mathf.Sin(Frequency * 2 * UnityEngine.Mathf.PI * (i + SampleIndex) / SampleRate);

        if (channelIndex == NumberOfChannels - 1)
            SampleIndex = (uint)(SampleIndex + samples.Length) % SampleRate;

        // false를 반환하여 제공할 데이터가 없음을 표시합니다. 이 경우 연결된 이벤트도 중단됩니다.
        return IsPlaying;
    }

    // 오디오 형식을 설정하는 콜백 - 이 함수는 샘플이 요청되기 전에 한 번 호출됩니다.
    void AudioFormatDelegate(uint playingID, AkAudioFormat audioFormat)
    {
        // 설정해야 하는 주요 매개 변수는 채널 구성과 샘플 레이트입니다.
        audioFormat.channelConfig.uNumChannels = NumberOfChannels;
        audioFormat.uSampleRate = SampleRate;
    }

    private void Start()
    {
        // Audio Input 플러그인을 사용하도록 Wwise 안에서 설정된 AudioInputEvent 이벤트는 gameObject에 게시됩니다.
        // AudioFormatDelegate는 한 번 호출되며 AudioSamplesDelegate는 false를 리턴할 때까지 각 프레임마다 한 번 호출됩니다.
        AkAudioInputManager.PostAudioInputEvent(AudioInputEvent, gameObject, AudioSamplesDelegate, AudioFormatDelegate);
    }

    // 이 메소드를 다른 스크립트에서 호출하여 콜백을 중단할 수 있습니다
    public void StopSound()
    {
        IsPlaying = false;
    }

    private void OnDestroy()
    {
        AudioInputEvent.Stop(gameObject);
    }
}

Unity에서 맞춤 위치 지정 적용하기

기본적으로 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 의 위치를 청자의 위치 (화면 안의 거리 리스너)로 사용하며, 모든 방사체의 거리는 여전히 메인 카메라의 방향을 청자의 방향 (화면 밖의 방향 리스너)으로 설정합니다.

#if ! (UNITY_DASHBOARD_WIDGET || UNITY_WEBPLAYER || UNITY_WII || UNITY_WIIU || UNITY_NACL || UNITY_FLASH || UNITY_BLACKBERRY) // Disable under unsupported platforms.

//
// Copyright (c) 2017 Audiokinetic Inc. / All Rights Reserved
//

using UnityEngine;
using System;
using System.Collections.Generic;


[AddComponentMenu ("Wwise/AkGameObj3rdPersonCam")]
[ExecuteInEditMode] //isStaticObject의 알맞은 상태를 유지하는 데 필요한 ExecuteInEditMode입니다.
public class AkGameObj3rdPersonCam : AkGameObj
{
    public Transform target;            // 이 카메라가 따라갈 위치를 말합니다. 인스펙터에서 사용자가 이 부분을 플레이어 캐릭터의 Unity gameObject로 지정할 수 있습니다.

    
    // 카메라의 위치를 플레이어의 위치로 설정하여 거리 감쇠를 처리합니다.
    public override Vector3 GetPosition ()
    {
        return target.GetComponent<AkGameObj> ().GetPosition ();
    }

}
#endif // #if ! (UNITY_DASHBOARD_WIDGET || UNITY_WEBPLAYER || UNITY_WII || UNITY_WIIU || UNITY_NACL || UNITY_FLASH || UNITY_BLACKBERRY) // Disable under unsupported platforms.
생성시간 : Fri Mar 29 16:14:34 2019, 프로젝트명 : Wwise Unity Integration, 생성자 :   doxygen 1.6.3