기술 자료

지원

Cloud Content Delivery

Open Unity Dashboard

Cloud Content Delivery

CCD + 어드레서블 설명

Follow this workflow to integrate the Addressable Asset system with Cloud Content Delivery for seamless content delivery.
읽는 시간 4분최근 업데이트: 한 달 전

이 섹션에서는 CCD(Cloud Content Delivery)와 어드레서블을 사용하여 실제 Unity 게임 프로젝트를 설정하는 방법에 대해 설명합니다. 이를 통해 Unity 에디터에서 CCD로 에셋 파이프라인을 쉽게 연동할 수 있습니다. Loady Dungeons라는 매우 간단한 모바일 게임을 사용하여 다음 방법을 배웁니다. 이 설명을 읽으면 사용자에게 콘텐츠를 효과적으로 제공하는 방법과 CCD를 통해 유니티의 어드레서블 에셋 시스템을 사용하는 방법을 알 수 있습니다.

프로젝트 다운로드

이 설명을 따라 진행하려면 가장 먼저 GitHub에서 샘플 게임의 최신 버전인 Loady Dungeons를 다운로드해야 합니다.

프로젝트 테스트

  1. Unity 에디터를 엽니다.
  2. Loady Dungeons 프로젝트를 엽니다.
  3. MainMenu 씬을 엽니다.
  4. Game 탭을 클릭합니다.
  5. Aspect 드롭다운에서 + 를 클릭합니다.
    1. ‘Aspect Ratio’의 WidthHeight를 각각 9와 16으로 설정하여 새로운 종횡비 Type을 생성합니다. 이는 게임 미리보기가 휴대폰에서 실행되는 것처럼 보이도록 만듭니다.
    2. OK를 클릭합니다.
    3. Low Resolution Aspect Ratios 선택을 해제합니다.
  6. 에디터의 Play 버튼을 눌러 게임을 플레이합니다.

어드레서블 에셋 패키지 설치

에셋을 어드레서블로 표시하려면 Unity 에디터에 Addressables 패키지를 직접 설치해야 합니다.
  1. Window > Package Manager를 선택합니다.
  2. 사용 중인 Unity 에디터 버전에 대해 검증된 최신 버전의 Addressables를 검색합니다. 이 예에서는 버전 1.16.19를 사용합니다.
  3. 필요한 버전을 선택한 다음 Install을 클릭합니다.

게임 에셋을 어드레서블로 구성

어드레서블 에셋은 주소로 에셋을 로드하여 에셋 관리 오버로드를 처리하는 간편한 방법을 제공합니다. 이제 Addressables 패키지가 설치되었으므로 게임 에셋을 어드레서블로 표시해 보겠습니다.
  1. 프로젝트(Project) 창에서 Scenes 폴더를 엽니다.
  2. 다음 에셋을 선택합니다.
    • Level_00
    • Level_01
    • Level_02
    • Level_03
  3. 인스펙터(Inspector) 창에서 각각에 대해 Addressable을 선택합니다.
  4. Window > Asset Management > Addressables > Groups에서 Addressables Groups 창을 엽니다.
  5. Create > Group > Packed Assets를 사용하여 다음과 같은 새 그룹을 생성합니다.
    • Level 00
    • Level 01
    • Level 02
    • Level 03
    • Hats
  6. 기본 그룹의 씬 에셋을 해당 그룹으로 드래그합니다. 예를 들어 기본 그룹의 Level_01 씬을 이전에 생성한 새 그룹 Level 01로 드래그합니다.
  7. 프로젝트 창의 Hats 폴더(Prefabs > Hats)에서 전체 콘텐츠를(폴더 자체가 아님) Hats 그룹으로 드래그합니다.
  8. Addressables Groups 창에서 각 에셋을 선택하고 인스펙터 창에서 긴 Addressable 필드의 이름을 더 간단한 이름으로 변경합니다. 모든 에셋을 선택하고 오른쪽 클릭 > Simplify Addressable Names를 선택하면 자동으로 이름을 변경할 수 있습니다. 씬 에셋 Level_00의 경우 Addressable 필드의 이름을 Assets/Scenes/Level_00.unity에서 Level_00으로 변경합니다.
    • 씬 에셋 Level_00의 Addressable 필드 이름을 Level_00으로 변경
    • 씬 에셋 Level_01의 Addressable 필드 이름을 Level_01로 변경
    • 씬 에셋 Level_02의 Addressable 필드 이름을 Level_02로 변경
    • 씬 에셋 Level_03의 Addressable 필드 이름을 Level_03으로 변경
    • 프리팹 에셋 Hat00의 Addressable 필드 이름을 Hat00으로 변경
    • 프리팹 에셋 Hat01의 Addressable 필드 이름을 Hat01로 변경
    • 프리팹 에셋 Hat02의 Addressable 필드 이름을 Hat02로 변경
    • 프리팹 에셋 Hat03의 Addressable 필드 이름을 Hat03으로 변경

프로파일 구성 및 에셋 번들 빌드

  1. 이 단계에서는 게임 개발과 관련된 모든 관련 설정을 이 개발 프로파일에 저장하기 위해 새로운 어드레서블 프로파일을 생성합니다.
    1. Window > Asset Management > Addressables > Groups를 클릭합니다.
    2. 드롭다운에서 Profile > Manage Profiles를 선택합니다.
    3. 결과로 나타나는 Addressables Profiles 창에서 Create > Profile을 선택합니다.
    4. New Profile이라는 프로파일이 나타납니다. 프로파일을 오른쪽 클릭하고 Rename Profile을 선택합니다. 이름을 ‘Development Profile’로 지정합니다.
  2. Development Profile > Set Active를 오른쪽 클릭합니다. 이를 통해 Development Profile이 현재 사용 중인 프로파일로 설정됩니다.
  3. 이제 게임의 비코드 에셋이 포함된 아카이브 파일인 에셋 번들을 빌드합니다. 이는 에디터의 플레이 모드가 로컬 에셋 대신 에셋 번들을 사용하기 위함입니다.
    1. Window > Asset Management > Addressables > Groups로 이동합니다.
    2. 드롭다운에서 Build > New Build > Default Build Script를 선택합니다.
    3. 드롭다운에서 Play Mode Script > Use Existing Build를 선택합니다.

CCD 시작하기

이제 이 게임을 CCD(Cloud Content Delivery) 서비스에 연결하여 궁극적으로 어드레서블과 에셋 번들을 활용할 준비가 되었습니다. CCD(Cloud Content Delivery)의 장점은 CCD가 애플리케이션의 새 버전을 다시 설치할 필요 없이 전 세계의 애플리케이션 사용자에게 콘텐츠를 호스팅하고 전달하는 관리형 클라우드 서비스라는 점입니다. CCD를 시작하려면 다음을 수행합니다.
  1. Unity Dashboard로 이동합니다.
  2. Unity ID를 사용하여 로그인합니다.
  3. 프로젝트 드롭다운에서 Create Project를 클릭합니다.
    1. 이름을 ‘Loady Dungeons Workshop’으로 지정합니다.
    2. Create project를 클릭합니다.
  4. Loady Dungeons WorkshopProject Settings(기어 아이콘)를 클릭합니다. 프로젝트 ID를 기록해 둡니다.
  5. 왼쪽에서 Environments를 선택합니다.
  6. 아직 데브 환경이 없다면 데브 환경을 생성합니다.
  7. 대시보드 랜딩 페이지에서 Cloud Content Delivery를 찾아 선택합니다.

커맨드 라인 인터페이스(선택 사항)

추가로 CLI(커맨드 라인 인터페이스)를 사용하여 프로젝트를 관리하려는 경우 다음을 수행합니다.
  1. 운영체제에 맞는 CLI를 다운로드합니다.
  2. 컴퓨터의 환경 변수에 CLI 폴더가 포함되어 있어야 합니다.
  3. 커맨드 라인을 열고 프로젝트 폴더로 이동합니다.
  4. CLI가 구성되었는지 확인하려면
    ucd help
    커맨드를 입력합니다.
CCD CLI(커맨드 라인 인터페이스)를 참고하십시오.

버킷

이제 이 프로젝트의 다양한 생성 단계를 지원하는 버킷을 생성하겠습니다.

버킷 생성

  1. CCD 랜딩 페이지에서 왼쪽에 있는 Buckets를 클릭합니다.
  2. 프로젝트 드롭다운에서 Loady Dungeons Workshop을 선택합니다(아직 선택하지 않은 경우).
  3. Create Bucket을 클릭합니다.
    1. 버킷 이름을 ‘Loady Dungeons Sample’로 지정합니다.
    2. 버킷에 설명(선택 사항)을 제공합니다.
    3. 다음 중에서 이 버킷이 해당되는 옵션을 선택합니다.
      • Open to all: 누구나 이 버킷의 콘텐츠를 수정할 수 있습니다.
      • Promotion only: 소유자와 관리자는 승격을 통해 콘텐츠를 수정할 수 있습니다. 누구도 이 버킷의 콘텐츠를 업로드하거나 삭제할 수 없습니다.
    4. 이 버킷에 대한 읽기 액세스 권한을 제한하려면 Enable Bucket Privacy를 선택합니다. 비공개 버킷은 액세스 토큰이 있는 사용자만 콘텐츠를 읽을 수 있도록 허용합니다.
    5. Next를 선택합니다.
    6. 프로덕션 환경과 데브 환경이 모두 선택되어 있어야 합니다.
    7. Create를 선택합니다.
이제 데브 환경과 프로덕션 환경 모두에 대해 Loady Dungeons Sample 버킷이 대시보드의 Cloud Content Delivery 버킷 페이지에 표시됩니다. 페이지 상단에 있는 Environments 드롭다운을 사용하여 개발 환경을 전환할 수 있습니다. 나중에 원격 로드 경로에서 버킷을 사용해야 하므로 두 개발 환경 모두에서 각 버킷의 버킷 ID를 기록해 둡니다.

에셋 번들 생성 및 콘텐츠 수동 업로드

에셋 번들 생성

에셋 번들은 Unity에서 런타임 시점에 로드할 수 있는 플랫폼별 비코드 에셋이 포함된 아카이브 파일입니다. 에셋 번들을 생성하려면 다음을 수행합니다.
  1. Unity 에디터 프로젝트에서 Window > Asset Management > Addressables > Groups를 클릭합니다.
  2. Profile 드롭다운에서 Development Profile이 선택되어 있어야 합니다. 선택되어 있지 않으면 지금 선택합니다.
  3. Profile 드롭다운에서 Manage Profiles를 선택합니다.
  4. Development Profile이 선택된 상태에서 다음을 설정합니다.
    • RemoteBuildPath:
      AssetBundles/[BuildTarget]
      (여기서
      [BuildTarget]
      은 기본 하위 폴더임)
    • RemoteLoadPath:
      https://PROJECT_ID.client-api.unity3dusercontent.com/client_api/v1/buckets/BUCKET_ID/release_by_badge/latest/entry_by_path/content/?path=
      • PROJECT_ID
        를 사용자의 프로젝트 ID로 변경합니다. 이전에 프로젝트 ID를 기록하지 않은 경우 대시보드 모서리에서 사용자 이름을 클릭한 다음 Account > Project Management > Loady Dungeons Workshop을 클릭하면 찾을 수 있습니다.
      • 경로의
        BUCKET_ID
        를 사용하려는 버킷의 ID로 변경합니다(이 예에서는 데브 환경에서 생성된 Loady Dungeons Sample 버킷의 ID로 변경). 이전에
        BUCKET_ID
        를 기록하지 않은 경우 CCD 대시보드의 버킷 목록에서 찾을 수 있습니다.
      • 경로에서
        latest
        는 최신 릴리스에 할당된 자동 생성 배지인 Latest라는 배지를 의미합니다.
  5. Addressables Groups 창으로 돌아갑니다.
  6. Hats를 선택합니다.
  7. 인스펙터 패널에서 다음을 설정합니다.
    1. Build Path: RemoteBuildPath
    2. Load Path: RemoteLoadPath
    3. Level 00, Level 01, Level 02, Level 03에 대해 반복
    이를 통해 이 네 가지 에셋 세트의 빌드 경로와 로드 경로가 Development Profile에 대해 지정된 경로로 설정됩니다.
  8. Groups 창에서 Build 드롭다운을 클릭한 다음 New Build > Default Build Script를 선택합니다. 이를 통해 에셋 번들이 RemoteBuildPath 위치에 저장됩니다.
  9. 방금 만든 빌드를 플레이 테스트의 기초로 사용하려면 Play Mode Script > Use Existing Build를 클릭합니다.
  10. Unity 에디터에서 Play 버튼을 클릭하여 게임을 테스트합니다.
    • 게임에서 Start를 누릅니다. 이제 게임이 어떻게 중단되었는지 확인합니다.

콘텐츠 업로드

이제 이 콘텐츠를 이전에 CCD에서 설정한 개발 버킷에 업로드하겠습니다.
  1. 대시보드에서 데브 환경의 Loady Dungeons Sample 버킷을 선택합니다.
  2. 버킷이 비어 있으면 Upload using the dashboard를 선택하고, 버킷에 이미 엔트리가 포함되어 있으면 Upload Content를 선택합니다.
  3. 드래그 앤 드롭하거나 Browse 버튼을 선택하여 에셋 번들을 빌드한 폴더의 콘텐츠를 CCD 개발 버킷에 업로드합니다. 파일은 이전에 RemoteBuildPath로 지정한 폴더에 있습니다.
  4. Upload 5 Files(네 가지 레벨 및 Hats)를 선택합니다.
  5. 업로드 프로세스 후 Refresh Page를 클릭하여 버킷 정보의 상태를 업데이트합니다. 엔트리가 Unreleased Changes로 나타납니다. 이는 엔트리가 버킷에 있지만 아직 릴리스에 래핑되지 않았다는 것을 의미합니다.
  6. 릴리스하려면 Create Release를 선택합니다. 이는 데브 환경의 Loady Dungeons 샘플 버킷에 업로드한 에셋 번들을 가져와 릴리스에 바인드합니다. 화면에 표시되는 메시지에 따라 프로세스를 완료합니다.
CCD는 자동 생성된
latest
배지를 이 릴리스에 자동으로 적용하여 이 버킷에서 생성된 최신 릴리스로 표시합니다.

에셋 번들 생성 및 CCD Management 패키지로 콘텐츠 업로드

Addressables 1.19.15 이상이 포함된 CCD Management 패키지는 어드레서블 콘텐츠의 빌드와 업로드, 릴리스를 지원합니다.

에셋 번들 생성

  1. Unity 에디터 프로젝트에서 Window > Asset Management > Addressables > Groups를 클릭합니다.
  2. Profile 드롭다운에서 Development Profile이 선택되어 있어야 합니다.
  3. Profile 드롭다운에서 Manage Profiles를 선택합니다.
  4. Profiles 창에서 Development Profile을 선택한 다음 Cloud Content Delivery를 사용하도록 Remote 드롭다운을 변경합니다.
    1. 다음 옵션 목록에서 이전에 생성한 Loady Dungeons Sample 버킷을 선택합니다.
    2. 후속 목록에서 Latest 배지를 선택합니다.
  5. Addressables Groups 창으로 돌아갑니다.
  6. Hats를 선택합니다.
  7. 인스펙터 패널의 Content Packaging & Loading 아래에서 다음을 설정합니다.
    1. Build and Load Paths: Remote
    2. Level 00, Level 01, Level 02, Level 03에 대해 반복
    이를 통해 이 네 가지 에셋 세트의 빌드 경로와 로드 경로가 Development Profile에 지정된 경로 페어로 설정됩니다. 경로 페어에 대한 자세한 내용은 프로파일을 참고하십시오.
  8. Groups 창에서 Build 드롭다운을 클릭한 다음 New Build > Default Build Script를 선택합니다. 이를 통해 에셋 번들이 RemoteBuildPath 위치에 저장됩니다.
  9. 생성된 빌드를 플레이 테스트의 기초로 사용하려면 Play Mode Script > Use Existing Build를 클릭합니다.
  10. Unity 에디터에서 Play 버튼을 선택하여 게임을 테스트합니다.
  11. 게임에서 Start를 선택합니다. 이제 게임이 어떻게 중단되었는지 확인합니다.

콘텐츠 업로드

이 콘텐츠를 이전에 CCD에서 설정한 Loady Dungeons Sample 버킷에 생성, 업로드, 릴리스하려면 다음을 수행합니다.
  1. Unity 에디터 프로젝트에서 Window > Asset Management > Addressables > Groups를 클릭합니다.
  2. Build & Release를 선택합니다.
CCD Management 패키지는 기본 빌드 스크립트 동작을 사용하여 어드레서블 번들을 생성합니다. 그런 다음 관리 패키지는 Loady Dungeons Sample 버킷에 연결된 경로 페어와 관련된 모든 그룹과 앞서 설정한 최신 배지를 해당 원격 타겟에 업로드합니다. 마지막으로 관리 패키지는 해당 원격 타겟에 대한 릴리스를 생성하고 배지를
latest
로 업데이트합니다.

릴리스 승격

데브 환경의 Loady Dungeons Sample 버킷에 에셋을 업로드하고 해당 에셋을 릴리스에 연결한 후 이러한 최신 변경 사항을 공용으로 적용할 수 있습니다. 이는 사용자의 프로덕션 환경에도 버킷을 생성했기 때문입니다. 프로덕션 환경의 버킷에는 플레이어를 위해 준비된 릴리스가 포함되어 있습니다. 이는 승격이라는 프로세스를 통해 데브 환경의 버킷에서 프로덕션 환경의 버킷으로 릴리스를 이동하는 것을 의미합니다. 데브 환경의 버킷에서 프로덕션 환경의 버킷으로 릴리스를 승격하려면 다음을 수행합니다.
  1. 아직 이동하지 않은 경우 Unity Dashboard에서 Loady Dungeons Workshop CCD 프로젝트로 이동하여 Environments 드롭다운에서 데브 환경을 선택하고 Loady Dungeons Sample 버킷을 선택해야 합니다.
  2. Promote Release를 선택합니다.
  3. Target Environment 드롭다운에서 production을 선택합니다.
  4. Target Bucket 드롭다운에서 Loady Dungeons Sample을 선택합니다.
  5. 릴리스 노트(선택 사항)를 추가합니다.
  6. Next를 선택하고 화면에 표시되는 메시지를 따릅니다.
  7. Promote Release를 선택합니다.
다시 CCD는 자동 생성된
latest
배지를 이 릴리스에 자동으로 적용하여 이 버킷에서 생성된 최신 릴리스로 표시합니다.
게임을 테스트하기 전에 올바른 버킷을 가리키도록 프로파일 변수를 수정해야 합니다. 다음 두 가지 방법을 사용할 수 있습니다.
  1. 개발 환경마다 다른 플레이어 빌드를 가질 수 있습니다. 개발 빌드에는 디버그 기호와 데브 환경에서 버킷으로 설정된
    bucket_id
    변수가 있고 프로덕션 빌드에는 비활성화된 디버그 기호와 프로덕션 환경에서 버킷으로 설정된
    bucket_id
    변수가 있지만, 두 빌드는 동일한 콘텐츠를 사용합니다.
  2. 프로파일 변수 또는 TransformInternalId의 정적 프로퍼티를 사용하여 런타임 시 카탈로그가 도달하는 버킷을 동적으로 변경합니다. 정적 프로파일 변수와 어드레서블의 내부 ID 변환에 대한 자세한 내용은 리소스 URL 변환을 참고하십시오.
게임을 테스트하려면 다음을 수행합니다.
  1. Unity 에디터에서 에디터의 Play 버튼을 누릅니다.
  2. 게임 내에서 Start를 누릅니다.
  3. 게임 내에서 Play를 누릅니다. 이제 Unity 에디터에서 게임을 플레이할 수 있습니다.
이제 릴리스와 모든 해당 에셋을 데브 환경에서 프로덕션 환경으로 이동하여 사용자에게 배포할 준비가 되었습니다.

어드레서블을 비공개 버킷과 함께 사용

비공개 버킷에서 데이터를 읽으려면 유효한 버킷 액세스 토큰이 필요합니다. Addressables 1.19.4부터 WebRequestOverride 기능을 사용하여 버킷 액세스 토큰을 요청 헤더로 추가할 수 있습니다. 다음 예에서는 이를 보여 줍니다.
void Start(){ textComponent = GetComponent<Text>(); Addressables.WebRequestOverride = webRequest => { webRequest.SetRequestHeader("Authorization", "Basic "+token); // Debug.Log($"Fetching: {webRequest.url}"); }; Addressables.LoadAssetAsync<TextAsset>("Assets/one.txt").Completed += handle => { textComponent.text = handle.Result.text; // Debug.Log($"Text is now: {handle.Result.text}"); };}
이 예에서
token
은 base64로 인코딩된 버킷 액세스 토큰 값입니다.