Play Asset Delivery(PAD)는 150Mb보다 큰 애플리케이션을 전송하기 위해 사용할 수 있는 Google Play Store 기능입니다. APK 확장 파일(OBB)을 사용하여 텍스처, 사운드, 메시와 같은 추가 에셋을 저장하는 대신 PAD는 에셋 팩을 사용합니다. Google은 Google Play에서 에셋 팩을 호스팅하고 제공하므로 애플리케이션 리소스를 사용자에게 보내기 위해 콘텐츠 전송 네트워크를 만들 필요가 없습니다. PAD에 대한 자세한 내용은 Android의 Play Asset Delivery를 참조하십시오.
중요: PAD는 Google Play Store에서만 사용할 수 있습니다. 대용량 애플리케이션이 있고 다른 디지털 배포 서비스를 지원하고자 하는 경우 APK 확장 파일(OBB)을 사용해야 합니다.
Play Asset Delivery를 사용하려면 Android 앱 번들을 빌드하고 애플리케이션 바이너리를 분할하기 위해 프로젝트를 설정해야 합니다.
Android 앱 번들을 빌드하려면 Unity를 다음과 같이 설정하십시오.
애플리케이션 바이너리를 분할하려면 Unity를 다음과 같이 설정하십시오.
이제 애플리케이션을 빌드하면 Unity는 기본 모듈과 에셋 팩으로 분할된 애플리케이션을 포함하는 Android 앱 번들을 생성합니다.
Unity가 자동으로 생성한 에셋 팩을 따라 자체 커스텀 에셋 팩도 만들 수 있습니다. 이는 에셋 팩에 포함된 사항을 제어해야 할 때 유용합니다. Unity는 커스텀 에셋 팩을 최종 Android 앱 번들에 추가합니다. 커스텀 에셋 팩과 설정하는 방법에 대한 자세한 내용은 커스텀 에셋 팩을 참조하십시오.
에셋 팩에는 다운로드 크기 제한이 있습니다. 이를 고려하기 위해 Unity는 추가 에셋 크기에 따라 에셋 팩이 생성되는 방법을 다음과 같이 변경합니다.
install-time
전송 모드를 사용하여 단일 에셋 팩으로 패킹합니다. 어떤 커스텀 에셋 팩도 만들지 않는 경우는 기기가 에셋 팩을 애플리케이션 설치의 일환으로 다운로드하고 사용자가 처음 애플리케이션을 실행할 때 모든 에셋을 사용할 수 있다는 의미입니다.install-time
전송 모드를 용량이 더 큰 에셋 팩에 할당하고 fast-follow
전송 모드는 용량이 더 작은 에셋 팩에 할당합니다.참고: 이 에셋 팩 중 하나가 Google Play Store가 허용한 업로드 제한 용량을 초과하는 경우 Unity는 경고를 표시하지만 빌드를 중단하지는 않습니다. 또한 Unity는 에셋 팩 크기를 개별적으로 확인하며 커스텀 에셋 팩에 대한 크기 확인은 수행하지 않습니다. 즉 커스텀 에셋 팩과 Unity가 생성한 에셋 팩의 조합이 Google Play Store에 너무 커도 Unity는 경고나 오류를 표시하지 않습니다.
Unity가 자동으로 생성한 에셋 팩의 경우 Unity는 전송 모드 변경을 지원하지 않습니다. 에셋 팩에 대한 전송 모드를 변경하고자 하는 경우 에셋으로 커스텀 에셋 팩을 생성해야 합니다.
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를 호출하여 해당 에셋 팩의 이름을 입력합니다. 에셋 팩을 다운로드하는 동안 다운로드가 일시 정지되거나 중단될 수 있기 때문에 다운로드 상태를 모니터링해야 합니다.
특정 에셋 팩에 있는 비코드 리소스 종류를 제어하고자 하는 경우 커스텀 에셋 팩을 만들 수 있습니다. Unity가 생성한 에셋 팩과는 달리 커스텀 에셋 팩의 경우 전송 모드를 설정할 수 있습니다. 커스텀 에셋 팩을 만드는 경우 Google Play Store에는 에셋 팩에 대한 크기와 수량 제한이 있으므로 유의해야 합니다. 제한 사항에 대한 자세한 내용은 다운로드 크기 제한을 참조하십시오.
커스텀 에셋 팩을 만들려면 .androidpack으로 끝나는 이름을 가진 디렉토리를 만들어야 합니다. 이 디렉토리를 프로젝트의 에셋 디렉토리나 다른 하위 디렉토리에 배치할 수 있습니다. 예를 들어 MyAssets1이라는 이름의 커스텀 에셋 팩을 만들려면 다음 단계를 따르십시오.
on-demand
이므로 전송 모드를 변경하지 않는 경우 런타임 시 수동으로 에셋 팩을 다운로드해야 합니다. 이렇게 하는 방법에 대한 내용은 런타임 시 에셋 팩 관리를 참조하십시오.apply plugin: 'com.android.asset-pack'
assetPack {
packName = "MyAssets1"
dynamicDelivery {
deliveryType = "fast-follow"
}
}
이렇게 하면 전송 모드를 fast-follow
로 설정하므로 Google Play는 애플리케이션을 설치한 후 자동으로 에셋 팩을 다운로드합니다. 이 파일의 포맷에 대한 내용은 Asset Delivery 통합을 참조하십시오.
참고: build.gradle
파일에 지정한 packName은 .androidpack 확장자 없이 설정한 에셋 팩 디렉토리 이름과 일치해야 합니다.