버전

menu_open
대상 플랫폼:
Wwise Unity Integration Documentation
Android 전용 정보

Android용으로 빌드하기

Android(안드로이드)용 SoundBank는 APK 파일 안에 들어 있으며 LoadBank() API를 통해 직접 접근할 수 있습니다. StreamingAssets 폴더 아래 배치된 SoundBank는 Unity 프로젝트를 빌드할 때 APK의 Assets 폴더 안에 들어갑니다. Low-Level IO는 APK에서 SoundBank에 확실하게 접근합니다.

또한 Low-Level IO는 SD 카드와 같이 Android 파일 시스템에 있는 SoundBank 파일에 접근할 수 있습니다. 원본 파일 시스템에 접근하고자 할 경우 AkSoundEngine.AddBasePath(YourPath) 를 호출해야 합니다. 이 새로운 경로는 기본 APK 파일보다 우선시됩니다. 파일이 외부 경로와 똑같은 이름을 가지며 APK 안에 있을 경우 외부 경로가 사용됩니다. APK가 빌드된 후 오디오 콘텐츠에 DLC나 패치를 추가할 경우 외부 파일로 접근하는 것이 유용할 수 있습니다.

백그라운드 모드

앱이 백그라운드로 전환될 경우 AkSoundEngine.Suspend() 를 호출할 것을 권장합니다. 앱이 포그라운드로 돌아올 경우 AkSoundEngine.WakeupFromSuspend() 를 통해 사운드를 복구하세요. 현재 이 기능은 AkInitializer 에 구현되어 있지만 필요에 따라 게임에서 알맞은 부분으로 옮길 수 있습니다.

배경 음악 뮤트하기

Wwise Authoring에는 Audio Bus에서 배경 음악을 뮤트할 수 있는 옵션이 있습니다. 이 기능을 사용하면 플레이어 음악이 시작될 때 게임 음악을 뮤트할 수 있습니다 (플레이어가 소유한 음악으로 교체하기 참고). 그러나 Android에서 이 옵션을 활성화한 채 Unity Audio를 활성화하면 버스를 통과하는 음악이 항상 뮤트됩니다.

이 두 설정을 조합하면 호환이 되지 않으므로 Wwise 설정을 이용해 배경 음악을 뮤트할 것인지 아니면 Unity Audio를 활성화할 것인지를 결정해야 합니다.

OBB 파일 사용하기

OBB와 Wwise IO 개요

Android(안드로이드) 플랫폼의 경우 Unity 옵션 Player Settings > Publishing Settings > Split Application Binary가 설정되어 있을 때 APK Expansion Files(확장 파일) 은 프로젝트 에셋을 번들로 묶습니다. 이렇게 하면 SoundBank를 포함한 StreamingAssets 폴더가 담긴 zip 파일이 .obb 확장자로 생성됩니다. 기본 Android SoundBank 로딩 지원은 SoundBank가 APK 파일이나 OBB 파일에 있다고 가정합니다.

OBB 파일을 자체적으로 외부에서 생성할 경우 AkSoundEngine.SetBasePath에 주어지는 내부 경로가 반드시 OBB에 있는 경로와 같아야 합니다. 기본 I/O 시스템이 작동하려면 반드시 OBB 파일을 압축하거나 암호화하지 않아야 합니다. 그렇지 않으면 영구 데이터 경로에서 OBB를 압축 해제해야 합니다. 즉시 압축을 해제하기에는 CPU 비용이 너무 큽니다.

메모리에서 뱅크 로드하기

대신 메모리 내부 뱅크 로딩을 사용할 수 있습니다. AkMemBankLoader.cs에 예시가 제공되어 있습니다. 이 스크립트는 씬이 시작될 때 지정된 SoundBank 로딩을 시도하며 씬이 파괴될 때 언로딩을 시도합니다. 이 예시를 사용하려면 다음 사항을 변경해야 합니다.

  1. SoundBank를 로드해야 하는 모든 게임 오브젝트에 이 스크립트를 컴포넌트로 추가하세요.
  2. Inspector(인스펙터)에서 SoundBank의 파일 이름을 스크립트 컴포넌트의 Bank Name 입력란에 입력하세요.
  3. SoundBank가 현지화되는 경우 Inspector에서 Is Localized Bank 옵션을 선택하세요. AkInitializer.cs 에서 정의한 전역 언어를 사용합니다.
  4. 다른 모든 SoundBank 로딩 메소드를 비활성화하고 씬을 저장하세요.

AkMemBankLoader.LoadNonLocalizedBank()AkMemBankLoader LoadLocalizedBank() 이 두 가지 메소드는 현지화되지 않거나 현지화 된 SoundBank의 경우 코드에서 직접 호출할 수 있습니다.

제한 사항

  • 내부 메모리 관련 메소드는 스트리밍되는 SoundBank를 로드할 수 없습니다. 더 낫지만 어려운 방법으로, 저수준 IO 후크를 구현하여 zip 파일을 압축하면 스트리밍되는 SoundBank와 그렇지 않은 SoundBank를 모두 지원할 수 있습니다. 여기에 대한 예시는 후에 제공하도록 하겠습니다. 사용자는 이러한 후크를 자유롭게 구현하고 Integration을 다시 빌드할 수 있습니다.
  • 간편함을 위해 이 예시 스크립트는 스크립트 컴포넌트 당 하나의 SoundBank만 로드하지만, SoundBank의 목록을 일괄적으로 로드하도록 모듬 기반 버전으로 스크립트를 확장할 수 있습니다.
  • 이 예시는 가장 간단한 내부 메모리 SoundBank 로딩 API만 래핑합니다. 필요할 경우 쉽게 추가할 수 있는 또다른 콜백 기반 버전이 있습니다. API 바인딩은 이미 Integration에서 사용할 수 있습니다.
참고

이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요