Cloud Content Delivery를 통해 어드레서블 사용
Unity CCD(Cloud Content Delivery)와 함께 어드레서블을 사용하여 원격 어드레서블 콘텐츠를 배포할 수 있습니다.
어드레서블 에셋을 CCD와 함께 작동하도록 설정하려면 다음 단계를 따르십시오.
- 프로파일에 CCD URL이 포함되도록 설정합니다.
- 에셋 번들을 빌드하고 CCD에 업로드합니다.
CCD URL로 프로파일 설정
프로파일에 저장된 BuildPath
및 LoadPath
변수는 어드레서블 시스템이 빌드 아티팩트를 생성하는 위치와 런타임에 에셋을 찾는 위치를 지정합니다. 원격 경로가 CCD와 함께 작동하도록 설정합니다. 로컬 경로를 변경해야 할 특별한 이유가 없다면 로컬 경로의 표준 기본값을 그대로 둡니다.
필요한 경우 프로파일러 창에서 빌드를 CCD로 퍼블리시하기 위한 신규 프로파일을 생성합니다. 이 프로파일에서 원격 경로 변수를 설정하여 올바른 URL에서 콘텐츠에 액세스할 수 있도록 합니다.
원격 BuildPath
를 편리한 값으로 설정할 수 있습니다. 여러 프로파일이 있는 경우, 특히 다른 원격 URL에서 호스팅하는 경우에는 빌드 아티팩트가 서로 섞이지 않도록 각 프로파일에 고유한 빌드 경로를 사용하는 것이 좋습니다.
원격 LoadPath
를 다음 두 경로 중 하나로 설정합니다.
- 배지를 사용하여 콘텐츠를 퍼블리시하는 경우:
https://(ProjectID).client-api.unity3dusercontent.com/client_api/v1/environments/(EnvironmentName)/buckets/(BucketID)/release_by_badge/(BadgeName)/entry_by_path/content/?path=
- 릴리스를 사용하여 퍼블리시하는 경우:
https://(ProjectID).client-api.unity3dusercontent.com/client_api/v1/environments/(EnvironmentName)/buckets/(BucketID)/releases/(ReleaseID)/entry_by_path/content/?path=
(ProjectID)
는 CCD 프로젝트의 ID 문자열입니다.(EnvironmentName)
은 프로젝트의 환경 이름입니다.(BucketID)
는 프로젝트 내 CCD 버킷의 버킷 ID 문자열입니다.(ReleaseID)
는 버킷 내 특정 릴리스의 ID입니다.(BadgeName)
은 특정 CCD 배지의 이름입니다.
프로파일 생성 및 편집 방법에 대한 자세한 내용은 프로파일을 참조하십시오.
[!중요] 원격 로드 경로를 변경할 경우 어드레서블 콘텐츠 전체를 다시 빌드해야 합니다.
Cloud Content Delivery Bundle Location 옵션 사용
프로젝트가 CCD 서비스를 사용하도록 설정된 경우, 프로파일의 원격 경로 페어를 설정하여 콘텐츠를 지정된 버킷 및 배지에 퍼블리시할 수 있습니다.
이 기능을 사용하려면 Content Delivery Management API 패키지가 있어야 합니다.
CCD 번들 위치를 사용하여 프로파일 변수를 설정하려면 다음 단계를 따르십시오.
- Profile 창(메뉴: Window > Asset Management > Addressables > Profiles)을 엽니다.
- 변경할 프로파일을 선택합니다.
- Remote 변수가 Cloud Content Delivery Bundle Location 을 사용하도록 변경합니다.
Automatic (set using CcdManager)
또는Specify the Environment, Bucket, and Badge
옵션을 선택합니다.CcdManager
는 런타임에 어떤 환경, 버킷, 배지를 로드할지를 어드레서블에 알리는 데 사용되는 정적 클래스입니다. .- Automatic을 선택할 경우 사용하려는 환경을 선택합니다.
- Specify를 선택할 경우 사용하려는 환경을 선택합니다.
- 사용할 버킷을 선택합니다. 버킷이 없는 경우 새로 만들 수 있는 창이 표시됩니다.
- 배지를 선택합니다.
CCD로 전달할 콘텐츠를 빌드할 때 이 배지를 활성 프로파일로 설정합니다.
프로파일 수정 방법에 대한 자세한 내용은 프로파일을 참조하십시오.
CCD URL로 그룹 설정
인스펙터 창에서 그룹이 Remote 를 Build & Load Path 로 사용하도록 설정합니다.
그룹 수정 방법에 대한 자세한 내용은 그룹을 참조하십시오.
어드레서블 콘텐츠 빌드, 업로드 및 해제
CCD 대시보드/CLI 사용
어드레서블 콘텐츠를 생성하고 CCD 프로젝트에 업로드하려면 다음 단계를 따르십시오.
- CCD에 설정한 프로파일을 활성 프로파일로 설정합니다.
- 어드레서블 콘텐츠를 빌드합니다.
- 전체 콘텐츠 빌드를 생성하는 경우 어드레서블 콘텐츠 빌드를 참조하십시오.
- 수정된 원격 콘텐츠로 기존 빌드를 업데이트하는 경우 콘텐츠 업데이트를 위한 빌드를 참조하십시오.
- CCD 대시보드 또는 CLI를 사용하여 원격 빌드 경로에서 생성된 파일을 업로드합니다.
- 릴리스를 생성하고 CCD 대시보드나 CLI를 사용하여 배지를 업데이트합니다.
어드레서블 콘텐츠를 빌드하면 콘텐츠 카탈로그(.json), 해시 파일(.hash), 하나 이상의 에셋 번들(.bundle) 파일이 생성됩니다. 프로파일 로드 경로에 사용된 URL에 해당하는 버킷에 이러한 파일을 업로드합니다.
로컬 콘텐츠를 변경한 경우 새 플레이어 빌드를 생성해야 합니다.
CCD Management 패키지 사용
어드레서블 콘텐츠를 생성하고 CCD 프로젝트에 업로드 및 릴리스하려면 다음 단계를 따르십시오.
- Groups 창(메뉴: Window > Asset Management > Addressables > Groups)을 엽니다.
- Build & Release 옵션을 사용합니다.
CCD Management 패키지는 기본 빌드 스크립트 동작을 사용하여 어드레서블 번들을 생성합니다.
그런 다음, 드롭다운 창을 통해 CCD 버킷 및 배지에 연결된 경로 페어에 관한 모든 그룹은 생성된 번들이 관리 패키지를 통해 해당 원격 타겟에 업로드되도록 합니다.
마지막으로 관리 패키지가 해당 원격 타겟에 대한 릴리스를 생성하고 배지를 업데이트합니다.
CcdManager
프로젝트 프로파일 경로 페어를 설정하고 CCD를 활용할 때 Automatic
을 사용하는 옵션이 있습니다. 이 옵션은 CcdManager
를 활용하여 런타임에 정적 프로퍼티를 설정해서 에셋 로딩을 위해 어떤 환경, 버킷, 배지를 사용해야 할지를 어드레서블에 알립니다. CcdManager
는 EnvironmentName
, BucketId
, Badge
프로퍼티를 갖습니다. 어드레서블 초기화 전 런타임에 이러한 프로퍼티를 설정하면 어드레서블이 CCD 내에서 이러한 위치를 찾도록 합니다. 환경, 버킷, 배지에 대한 자세한 내용은 CCD 구성을 참조하십시오.
CcdManager 프로퍼티 설정의 예시 스니핏:
CcdManager.EnvironmentName = ENV_NAME;
CcdManager.BucketId = BUCKET_ID;
CcdManager.Badge = BADGE;
// 에셋 로드 또는 인스턴스화를 위한 어드레서블 호출
[!참고] 어드레서블을 호출할 경우 시스템이 초기화되므로, 어드레서블 호출 전에
CcdManager
를 설정하여 경쟁 상태나 예기치 않은 동작이 발생하지 않게 하십시오.
빌드 이벤트 사용
CCD는 빌드 및 업로드 서비스를 래핑하여 추가 기능을 제공하는 방법을 제공합니다.
빌드 이벤트 추가
PreUpdate 및 PreBuild 이벤트 체인에 이벤트를 추가할 수 있습니다.
#if (UNITY_EDITOR && ENABLE_CCD)
using System.Threading.Tasks;
using UnityEditor.AddressableAssets.Build;
public class BuildHooks
{
static void AddBuildHook()
{
CcdBuildEvents.PrependPreBuildEvent(PrintBucketInformation);
CcdBuildEvents.PrependPreUpdateEvent(PrintBucketInformation);
}
static async Task<bool> PrintBucketInformation(AddressablesDataBuilderInput input)
{
UnityEngine.Debug.Log($"Environment: {CcdManager.EnvironmentName}");
UnityEngine.Debug.Log($"Bucket: {CcdManager.BucketId}");
UnityEngine.Debug.Log($"Badge: {CcdManager.Badge}");
return true;
}
}
#endif
버전 오버라이드 경고 비활성화
플레이어 버전 오버라이드에 대한 경고를 받았으며 현재 설정을 유지하려는 경우, 해당 빌드 이벤트를 제거하여 경고를 비활성화할 수 있습니다.
#if (UNITY_EDITOR && ENABLE_CCD)
using UnityEditor;
using UnityEditor.AddressableAssets.Build;
public class DisableBuildWarning
{
static void DisableWarning()
{
CcdBuildEvents.OnPreBuildEvents -= CcdBuildEvents.Instance.VerifyBuildVersion;
CcdBuildEvents.OnPreUpdateEvents -= CcdBuildEvents.Instance.VerifyBuildVersion;
}
}
#endif