Unity는 런타임 시 에셋 팩을 관리하는 API를 제공합니다. API는 Google의 PlayCore API를 사용하므로 PlayCore와 동일한 제한 사항을 가지고 있고 install-time
에셋 팩을 관리할 수 없습니다. 또한 PlayCore API를 사용하면 애플리케이션에 PlayCore 플러그인이 필요합니다. 프로젝트에 커스텀 에셋 팩이나 Unity가 생성한 에셋 팩 중 하나가 있는 경우 Unity는 자동으로 PlayCore 종속성을 애플리케이션 매니페스트에 추가합니다.
에셋 팩을 다운로드하고 에셋에 액세스하는 방법은 에셋 팩 전송 모드에 따라 다릅니다. 에셋 팩 전송 모드에는 다음과 같이 세 가지 방법이 있습니다.
install-time
: Google Play는 기기가 애플리케이션을 설치할 때 자동으로 install-time
에셋 팩을 다운로드합니다. Google Play는 이러한 에셋 팩을 기본 애플리케이션의 일부로 인식하며 최종 사용자는 전체 애플리케이션을 제거하지 않고는 이 에셋 팩을 제거할 수 없습니다. PlayCore API는 install-time
에셋 팩을 처리하지 않으므로 상태를 확인하거나 다운로드 요청 또는 install-time
에셋 팩을 제거할 수 없습니다. 또한 Unity에서 생성한 install-time
에셋 팩에 있는 스트리밍 에셋을 제외하고 이러한 에셋 팩 안에 있는 에셋에 직접 액세스할 수 없습니다. 스트리밍 에셋에 액세스하려면 Application.streamingAssetsPath를 사용하여 스트리밍 에셋 위치에 대한 경로를 찾은 다음 UnityWebRequest를 사용하여 해당 경로에 있는 에셋에 액세스합니다. 커스텀 에셋 팩을 생성하는 경우 표준 파일 API를 사용하여 안에 있는 에셋에 액세스할 수 없습니다. 대신 Android의 AssetManager API를 사용합니다.fast-follow
: Google Play는 애플리케이션을 설치한 후 자동으로 fast-follow
에셋 팩을 다운로드하기 시작합니다. 하지만 해당 애플리케이션을 처음 실행할 때 fast-follow
에셋 팩 전부를 사용할 수 있는 것은 아닙니다. 상태를 확인하고 Fast-follow
에셋 팩을 다운로드하려면 에셋 팩 다운로드를 참조하십시오.on-demand
: Google Play는 on-demand
에셋 팩을 자동으로 다운로드하지는 않습니다. 다운로드하려면 수동으로 시작해야 합니다. 수동으로 다운로드하는 방법에 대해서는 아래의 내용을 참조하십시오.전송 모드에 대한 자세한 내용은 전송 모드를 참조하십시오.
애플리케이션이 fast-follow
에셋 팩이나 on-demand
에셋 팩을 사용하는 경우 해당 기기는 애플리케이션이 내부의 에셋에 액세스할 수 있기 전에 반드시 이러한 에셋 팩을 다운로드해야 합니다. 기기에 에셋 팩이 있지 않은 경우 에셋 팩의 상태를 확인하고 다운로드하려면 먼저 각 에셋 팩의 이름을 알아야 합니다. Unity에서 생성한 에셋 팩의 이름을 가져오려면 AndroidAssetPacks.GetCoreUnityAssetPackNames를 호출합니다. 커스텀 에셋 팩 이름을 가져오는 런타임 API는 없으므로 반드시 직접 해당 에셋 팩을 추적해야 합니다. 빌드 시 커스텀 에셋 팩의 이름을 설정하면 그 이름이 해당 디렉토리의 이름입니다.
에셋 팩 이름을 알아낸 후 각 에셋 팩의 상태를 확인하려면 AndroidAssetPacks.GetAssetPackStateAsync를 호출하여 에셋 팩 이름을 입력합니다. 이렇게 하면 쿼리한 에셋 팩의 상태가 반환되며 그 결과를 사용하여 에셋 팩 다운로드 여부를 결정할 수 있습니다. Unity가 생성한 모든 에셋 팩의 상태를 빠르게 쿼리하고자 하는 경우 AndroidAssetPacks.coreUnityAssetPacksDownloaded를 사용할 수 있습니다. 이는 첫 번째 씬이 아닌 다른 씬을 로드하거나 Unity가 처리하는 다른 리소스에 액세스하려 하기 전에 Unity가 생성한 모든 에셋 팩을 사용할 수 있는지를 확인해야 하기 때문에 유용합니다.
다운로드해야 하는 모든 에셋 팩의 경우 AndroidAssetPacks.DownloadAssetPackAsync를 호출하여 해당 에셋 팩의 이름을 입력합니다. 에셋 팩을 다운로드하는 동안 다운로드가 일시 정지되거나 중단될 수 있기 때문에 다운로드 상태를 모니터링해야 합니다. 이를 수행하는 데는 두 가지 방법이 있습니다.