menu
 
버전
2021.1.14.8108

2024.1.4.8780

2023.1.12.8706

2022.1.18.8567

2021.1.14.8108

2019.2.15.7667

2019.1.11.7296

2018.1.11.6987

2017.2.10.6745

2017.1.9.6501

2016.2.6.6153

2015.1.9.5624


menu_open
Wwise Unity Integration Documentation
Unity용 Wwise Addressables Package

Unity Addressables에 관하여

Unity Addressables는 플레이어와는 별도로 에셋을 패키징하기 위해서 AssetBundles를 중심으로 구축된 시스템입니다. 이 시스템은 외부 서버에 외부 에셋이 저장되는 DLC 맥락에서 특히 유용합니다.

이제 막 Addressables를 사용하기 시작한 분들의 경우 공식 설명서
교육 자료를 통해 이에 대해 익힐 것을 권장합니다.

여기에서 Wwise Unity Addressables 패키지를 설정을 시작해보세요:

다음 섹션에서는 Wwise Addressables 패키지가 어떻게 작동하는지 설명합니다:

  1. Addressables 시스템의 특징
  2. 자주 겪는 문제 & 제한 사항
  3. Wwise Addressable 샘플
  4. Wwise Addressable Assets 설명
    1. SoundBank와 AddressableSoundBank
    2. Addressable Bank Manager
    3. WwiseBankReference
    4. Wwise Asset Importer (Wwise 에셋 임포터)
    5. 스트리밍 미디어
warning 주의: 이 패키지는 실험적으로 간주해 주세요. Addressables 지원은 Unity 통합의 새로운 기능이며 변경될 수 있습니다.
warning 주의: Unity 2018은 지원되지 않습니다. Unity 2018에서 외부 패키지를 사용할 경우 문제가 발생할 수 있기 때문에 2019년보다 오래된 Unity 버전에서 이 패키지가 올바르게 작동할 것 이라고 보장할 수 없습니다.

Addressables 시스템의 특징

Addressables 시스템은 고려해야 할 다음 특징을 가지고 있습니다:

  • Addressables을 사용한 에셋 로드하기는 본질적으로 비동기적입니다: 이 부분은 SoundBank 로드하기와이벤트 게시하기가 동일한 트리거에 연결되어 있을 경우에 문제를 일으킬 수 있습니다. 그렇기 때문에 정확한 이벤트 타이밍이 특히 중요할 경우 연관된 Event가 트리거될 수 있기 전에 SoundBank를 먼저 로드하는 것이 좋습니다. Init Soundbank는 씬에 있는 모든 다른 SoundBank 이전에 로드되어야 하기 때문에 특정 사례입니다. Init SoundBank 에셋이 원격으로 업데이트될 경우 Addressables를 사용하여 웹 서버로부터 새로운 Init SoundBank가 반드시 먼저 페치되어야 하기 때문에, 씬이 시작될 때 다른 SoundBanks를 로드하는 데에 약간의 추가 지연이 있을 수 있습니다.
  • Addressable 에셋은 씬 안에서 직접 참조되지 않아야 합니다: Addressable 에셋은 Addressables 시스템을 사용하여 씬에서 동적으로 로드되도록 고안되었습니다. 씬에서 직접 참조되는 에셋은 씬의 AssetBundle로 빌드 되며 Addressables를 통해 로드되지 않습니다. 씬에 직접 에셋을 배치하고 또한 이 에셋을 Addressables를 사용하여 패키징할 경우, 해당 씬의 AssetBundle과 Addressable 그룹의 AssetBundle에 각 하나씩 두 개의 다른 에셋 복사본이 존재하게 됩니다.

자주 겪는 문제 & 제한 사항

  • 프로젝트의 모든 플랫폼은 반드시 동일한 루트 Generated SoundBanks Path를 공유해야 합니다.
  • Unity 프로젝트에서 Generated SoundBank Path를 설정할 경우 External Source의 출력 경로가 자동으로 변경되지 않습니다.
  • Decoded SoundBank(디코딩된 사운드뱅크) 저장 및 로드하기가 아직 지원되지 않습니다.
  • Prepared Event(준비된 이벤트)가 지원되지 않습니다.
  • External Source(외부 음원)이 지원되지 않습니다.

Wwise Addressable 샘플

Wwise Addressable Samples 페이지는 Wwise Addressable Asset을 관리하는 데 도움이 되는 코드 샘플에 대한 추가 정보를 제공합니다.

Wwise Addressable Assets 설명

Wwise Asset Importer (Wwise 에셋 임포터)

생성 시 .bnk와 .wem 파일이 WwiseBankImporter와 WwiseStreamingAssetImporter 클래스에 의해 처리됩니다. 이 스크립트는 파일의 이진 파일을 담은 에셋을 생성합니다. 그런 다음 저희 커스텀 에셋인 포스트프로세서 WwiseBankPostProcess가 새로운 에셋을 해당 플랫폼의 Addressables 그룹으로 추가합니다. 각 플랫폼의 Init SoundBank는 자체적인 Addressables 그룹에 추가됩니다. Init Bank가 별도의 장소에 추가되는 이유는 출시 후에 프로젝트가 변경될 경우 (예: 새로운 오디오 버스 추가) 이 뱅크가 다시 반드시 업데이트되어야 하기 때문입니다. Init SoundBank를 자체적인 어드레서블 AssetBundle 안에 패키징하면, 호스팅 서비스로부터 이 에셋의 새로운 버전을 페치하는 데에 걸리는 시간을 최소화할 수 있습니다. 에셋이 추가되는 addressable group과 에셋에 적용되는 레이블을 사용자 지정하려면 Wwise Addressable Samples 페이지를 참조하세요.

SoundBank와 AddressableSoundBank

또한 에셋 포스트프로세서는 프로젝트의 각 SoundBank에 대해 WwiseAddressableSoundBank를 생성합니다. 이 에셋은 플랫폼의 이름을 해당 SoundBank와 스트리밍 미디어 에셋으로 매핑하는 사전(dictionary)을 담고 있습니다.

  • WwiseAddressableSoundBank는 Generated SoundBanks 폴더의 최상위 계층 폴더에 있습니다.
  • WwiseAddressableSoundBank 클래스는 AssetReferenceT를 사용하여 SoundBank와 미디어 파일을 가리킵니다.
  • 프로젝트를 빌드할 때 WwiseAddressableSoundBank의 Current Platfrom Assets 입력란이 대상 빌드 플랫폼으로 설정됩니다.
warning 주의: WwiseAddressableSoundBank에서 참조되는 SoundBank와 스트리밍 미디어는 소프트 참조입니다. 이 SoundBank와 스트리밍 미디어는 Addressables를 사용하여 로드되며 반드시 Addressables 그룹 안으로 패키징되어야 합니다.
warning 주의: 실수로 WwiseAddressableSoundBank를 삭제할 경우, 연관된 SoundBank를 삭제하고 재생성해야 새로운 WwiseAddressableSoundBank를 만들고 올바르게 참조를 구성할 수 있습니다.

Init Bank Holder

Init SoundBank용 WwiseAddressableSoundBank가 생성되면 씬에 있는 WwiseGlobal 게임 오브젝트에 InitBankHolder 컴포넌트가 추가됩니다. 이 컴포넌트는 AddressableBankManager가 쉽게 찾을 수 있도록 WwiseAddressableSoundBank를 저장하는 역할을 합니다.

Addressable Bank Manager

Wwise Addressables를 사용할 경우 사운드뱅크를 메모리로 로드/언로드하는 작업이 AkAddressableBankManager에 의해 처리됩니다. 이 클래스는 로딩되고 있고 로드된 AddressableSoundBank로의 참조를 저장하여 Init SoundBank가 항상 먼저 로드될 수 있게 해줍니다. 해당 SoundBank가 다 로드되기 전에 AkEvent가 트리거될 경우, 이 클래스는 트리거된 호출의 매개 변수를 저장하고 SoundBank가 로드된 후에 이벤트를 다시 트리거합니다.

SoundBank가 로드되면 현재 플랫폼에 해당하는 SoundBank 에셋이 Addressables를 사용하여 로드됩니다. SoundBank가 로드되면 사운드뱅크 데이터가 고정되며 AkSoundEngine.LoadBankMemoryCopy()를 사용하여 메모리의 복사본이 사운드 엔진으로 로드됩니다.

에디터에서 재생 모드에 있을 경우 어드레서블즈 대신 AssetDatabase를 사용하여 SounBanks가 동기적으로 로드됩니다. 비동기적 로딩은 빌드된 게임에서만 시험할 수 있습니다.

WwiseBankReference

WwiseBankReference 클래스는 Ak.Wwise.Bank 컴포넌트에 대한 저희의 커스텀 인스펙터에서 사용됩니다. WwiseBankReference는 WwiseAddressableSoundBank로의 하드 참조를 담습니다. 이 참조는 AkAssetUtilities.AddressableBankUpdated 델리게이트를 통해 WwiseAddressableSoundBank Asset이 생성되었을 때에 업데이트됩니다. WwiseBankReference가 WwiseAddressableSoundBank 다음에 생성되면 SoundBanks 폴더에서 Bank 이름과 일치하는 WwiseAddressableSoundBank 에셋을 검색합니다. 일련화된 WwiseBankReference는 Assets\Wwise\ScriptableObjects\SoundBank 안에 저장됩니다.

info 참고: 게임 오브젝트에 의해 직접 참조되는 에셋은 게임 오브젝트와 함께 패키징됩니다. AkBank Component는 WwiseBankReference로의 하드 참조를 담고 있으며, WwiseBankReference는 해당 WwiseAddressableSoundBank로의 하드 참조를 담고 있습니다. AkBank 컴포넌트가 있는 GameObject를 Addressables 그룹 안에 넣을 경우 WwiseBankReference와 WwiseAddressableSoundBank가 이와 함께 패키징됩니다 (명시적으로 이를 그룹에 추가할 필요 없이).

스트리밍 미디어

또한 스트리밍 미디어 (.wem 파일)도 WwiseBankImporter 스크립트에 의해 처리됩니다. WwiseAddressableSoundBank는 해당 뱅크와 연관된 플랫폼 전용 스트리밍 미디어 에셋으로의 참조 목록을 담고 있습니다. 뱅크가 로드되면 Addressables를 통해 미디어 에셋이 로드되며 Application.persistentDataPath 폴더로 복사됩니다. 동일한 이름을 가진 파일이 이미 폴더에 있을 경우 해쉬가 비교됩니다. 파일이 다를 경우 AssetBundle에서의 파일로 덮어쓰게 됩니다.


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

지원이 필요하신가요?

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

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

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

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

Wwise를 시작해 보세요