본문 바로가기

유니티/Addressable

[ Addressable ] 03 . Addressable 그룹으로 관리하기

[ 학습 흐름 ]
  • 어드레서블 에셋을 관리하는 단위인 그룹을 이해한다 .
  • 어드레서블 빌드 스크립트에서 사용하는 변수 모음인 Profile을 이해한다 .
  • 어드레서블 에셋 세팅을 이해한다

[ Addressable Group ]

1 . 그룹이란

[ 어드레서블 그룹이란 ]

- 어드레서블 에셋을 묶어서 관리하는 단위 .

- 그룹 단위로 에셋번들을 구성 할 수 있다 .


[ 에셋 관리의 고려사항들 ]

  • 논리적 구성 : 에셋을 논리적 카테고리로 정리하면 구성을 쉽게 이해할 수 있다 .
  • 런타임 성능 : 에셋 번들의 크기 , 개수가 많으면 병목현상이 발생 가능하다 .
  • 런타임 메모리 관리 : 함께 사용하는 에셋을 한곳에 보관 , 최대 메모리 요구량을 낮춘다 .
  • 플랫폼 특성 : 플랫폼의 특성 , 요구사항은 에셋을 정리할때 고려해야 한다 .
  • 에셋 업데이트 빈도 : 자주 업데이트를 하는 에셋끼리 모아두는게 좋다 .
  • 버전 관리 : 동일한 에셋 및 에셋 그룹에서 작업하는 사람이 많다면 버전관리 충돌이 발생 할 수 있다 .

[ 그룹화 전략 ]

프로젝트의 요구사항에 따라 적합한 전략을 정해야 한다 .

에셋을 그룹화 하는 일반적인 전략은 다음과 같다 .

  • 동시 사용 : 같은 시점에 사용한다면 함께 그룹화 하는게 좋다 .이는 최대 메모리 사용량을 줄이는데 도움이 된다 .
  • 논리적 엔티티 : 동일한 논리적 엔티티 (UI 레이아웃 / 텍스쳐 /사운드 등)에 속한 에셋을 함께 그룹화 한다 .
  • 유형 : 같은 유형의 에셋 ( 사운드 파일 / 텍스쳐 )을 그룹화 한다 .

2 . 그룹 관리하기

[ 그룹 생성하기 ]

- Window - Asset Management - Addressable로 이동한후  Groups를 선택 , Addressable Group 창을 연다 .

- New - Packed Asset을 선택 , 그룹을 생성한다 .

- 해당 그룹에 대한 설정은 우클릭 - Inspect Group Settings를 통해 가능하다 .


[ 그룹에 에셋 추가 ]

- 프로젝트 창에서 그룹창으로 에셋을 드레그 하여 설정 가능하다 .

- 혹은 에셋이 있는 폴더를 그룹에 추가한다  . 하위 객체들은 모두 해당 그룹에 포함된다 .


[ 그룹에 에셋 제거 ]

- 제거는 그룹 우클릭 - Remove Addressable로 가능하다 


3 . 그룹 설정하기

[ 그룹 설정 ]

그룹 설정
그룹 설정들

- 유니티가 콘텐츠 빌드에서 그룹내 에셋을처리하는 방식을 설정한다 .

- 그룹 설정은 유니티가 에셋 번들을 빌드하는 위치 , 번들 압축 설정등의 프로퍼티를 제어한다 .

- 그룹의 설정은 연결된 그룹 스키마 오브젝트에서 선언된다 .

- 그룹설정은 AddressableAssetData - Asset Groups에 모여있다 .


[ 그룹 스키마 오브젝트 ]

 

- 그룹 스키마는 어드레서블 그룹에 대한 설정 컬렉션을 정의하는 Scriptable Object 이다 .

- 그룹에 할당된 스키마는 그룹에서 에셋을 빌드하는데 사용되는 설정을 정의한다 .

- 커스텀 빌드 스크립트와 함께 스키마를 직접 정의 가능하다 .

- 빌트인 스키마에는 다음이 포함된다 .

  • Content Packing & Loading
  • Content Update Restriction
  • Resources and Build In Scenes : Bulit in Data

[ Content Packing & Loading ]

- 기본 빌드 스크립트에서 사용되는 기본 어드레서블 스키마 .

- 어드레서블 에셋의 빌드 및 로드에 대한 설정을 정의한다 .

  • Build & Load Paths : 번들이 생성되는 경로 / 번들이 런타임에 로드되는 경로 . 해당 경로의 옵션은 Profile에 의해서  정의된다 . 
    • Local : 애플리케이션 설치의 일부로 배포하는 경우
    • Remote : 원격 호스팅 서비스를 사용하는 경우
    • Custom : 각 경로를 직접 지정할때 사용한다 . 
  • Advanced Options
    • Asset Bundle Compression : 번들에 대한 압축 유형 .  로컬은  LZ4 / 원격은 LZMA가 일반적 .
    • Include In Build : 콘텐츠 빌드에 해당 그룹의 에셋이 포함된다 .
    • Force Unique Provider
    • Use Asset Bundle Cache : 원격 번들을 캐싱한다 . 즉 , 한번 다운받았다면 로컬에 캐시로 남는다 .
    • Asset Bundle CRC : 번들을 로드하기 전 번들의 무결성을 검증한다 .
    • Use UnityWebRequest for Local Asset Bundles : 로컬로 저장된 자산을 로드시 UnityWebRequest가 사용
    • Request Timeout : 원격 번들을 다운로드하기 위한 타임아웃 간격
    • Use Http Chunked Transfer : 사용 안되는 옵션 .
    • Http Redirect Limit : 번들을 다운로드 할 때 허용되는 리디렉션의 수.  -1은 제한 없음을 의미 .
    • Retry Count : 실패한 다운로드를 다시 시도하는 횟수
    • Include Address In Catalog : 카탈로그에 주소 문자열을 포함한다 .
    • Include GUIDs in Catalog : Asset Reference를 포함하는 에셋에 엑세스시 체크 .
    • Include Labels in Catalog : 레이블 문자열 사용시 체크 필요 . 비활성화로 카탈로그 크기를 줄인다 .
    • Internal Asset Naming Path : 에셋번들에서 에셋 ID를 결정 , 번들에서 에셋 로드하는데 사용 . 
    • Internal Bundle Id Mode : 에셋 번들이 내부에서 식별되는 방식을 정한다 .
    • Cache Clear Behavior : 설치된 애플리케이션이 캐시에서 에셋 번들을 지우는 시기를 결정함 .
    • Bundle Mode : 해당 그룹의 에셋을 번들로 패킹하는 법을 설정 .
    • Bundle Naming Mode : 에셋 번들의 파일 이름을 구성하는 방법을 설정
    • Asset Load Mode : 에셋을 요청시 개별적으로 로드할지 , 그룹의 모든 에셋을 함께 로드할지 설정
    • Asset Provider : 어드레서블이 이 그룹에서 생성된 에셋 번들에서 에셋 로드시 사용하는 Provider 클래스 . 에셋 번들에서 에셋을 제공하는 커스텀 제공자의 구현이 없다면 Asset from Bundles Provider로 설정한다 .
    • Asset Bundle Provider : 어드레서블이 그룹에서 생성된 에셋 번들을 로드할때 사용하는 Provider 클래스를 정의한다 . 에셋 번들을 제공하는 커스텀 제공자 구현이 없다면 Asset Bundle Provider를 사용한다 .

- 위의 값은 원격에서 사용시 적용하면 좋을 값들이다 .


[ Content Update Restriction ]

- Check for Content Update Restrictions 툴이 그룹의 에셋을 처리하는 방식이 결정된다 .

- 활성화시 시스템은 해당 그룹의 에셋을 자주 업데이트하지 않을 것으로 예상되는 정적 콘텐츠로 취급한다 .

- 즉 , 활성화후 Update 가 이루어지면 해당 그룹은 그대로 남아있고 새로운 그룹이 생성될것이다 .


[ Resources and Bulit In Scenes : Built In Data ]

- 그룹에 표시할 빌트인 에셋 유형에 대한 설정을 정의하는 특수목적의 스키마 .


4 . 그룹을 에셋 번들로 패킹하기

[ Bundle Mode ]

 

사용하는 그룹 설정의 Bundle Mode는 번들을 어떻게 패킹할지 정의한다 .

  • Pack Together :  그룹에 할당된 모든 에셋을 하나의 번들에 함께 패킹한다 .
  • Pack Separately : 그룹에 할당된 각 어드레서블을 자체 번들에 개별적으로 패킹한다 . 전체 폴더를 어드레서블 , 해당 콘텐츠를 함께 빌드할때 유용하다 .
  • Pack Together By Label :  동일한 레이블을 자체 번들로 패킹하다 .

[ 주의 사항 ]

- 씬 에셋은 항상 그룹 내 다른 어드레서블 번들과 별도로 패킹된다 . 그렇기에 씬 및 씬과 관련 없는 에셋이 혼합된 그룹은 빌드시 각각 씬 및 기타 항목을 위해 번들을 두 개 이상을 생성한다 . 즉 , 중복이 생긴다 . Build in Data - EditorSceneList에 씬에셋이 별도로 들어간다 .

 

- 어드레서블로 표시된 폴더의 에셋과 스프라이트 시트와 같은 복합 에셋은 Packing Separately를 선택했다면 다음의 방식으로 처리된다 

  • 어드레서블 폴더의 모든 에셋은 동일한 폴더에 함께 패킹된다 . ( 개별 어드레서블 표시 에셋은 제외 )
  • 어드레서블 스프라이트 아틀라스의 스프라이트는 동일한 번들에 포함된다 .

[ 에셋 번들 패킹 전략 ]

번들이 너무 많은 경우

  • 각 번들에는 메모리 오버헤드가 있다 . 메모리에 수천개의 번들을 한번에 로드시 메모리 사용량이 크게 증가할 것이다 
  • 번들 다운로드에는 동시성 제한이 있다 . 일정수 다운후 , 다음 번들이 트리거 되는 식 . 수보다는 크기 문제가 많다 .
  • 번들 정보로 카탈로그 크기가 커질 수 있다 .
  • 중복 에셋 가능성이 높다 .

번들이 너무 적은 경우

  • UnityWebRequest는 실패한 다운로드를 다시 시작하지 않는다 . 대규모 번들이 다운로드중 , 연결이 끊어진 경우 연결이 회복되면 다운로드가 다시 시작된다 .
  • 항목은 번들에서 개별적으로 로드 가능하지만 , 개별적 언로드는 불가하다 . 번들에 10개의 머테리얼이 있다면 10개를 로드후 9개를 해제하도록 설정하면 10개 모두 메모리에 있을 가능성이 높다 ,

5 . Addressable 그룹창 알아보기

[ 그룹창 ]

- Window - Asset Management - Addressables - Groups를 통해 진입

- 콘탠츠 빌드를 시작하고 , 어드레서블 시스템의 툴 및 설정에 액세스하는 중심적인 위치이다 .


[ 그룹목록 ]

- 초기 설치시Group창에는 두 개의 에셋 그룹이 표시된다 .

  • Built in Data : Resources 폴더/ Build Settings 목록에 포함된 씬에 있는 에셋이 포함.즉 , 어드레서블이 안되는 그룹
  • Default Local Group (Default) : 초기 어드레서블로 설정한 에셋이 추가된다 . 기본 그룹은 변경 가능하다 .

창의 각 열에는 다음의 정보가 표시된다 .

  • Notifications :  빌드중에 플래그 지정되는 그룹 또는 에셋 관련 알림
  • Group Name / Addressable Name : 항목의 이름 . 그룹의 경우는 변경가능한 이름 . 에셋의 경우는 어드레서블의 주소
  • Icon : 에셋 유형에 따른 Unity 에셋 아이콘
  • Path : 프로젝트의 소스 에셋에 대한 경로 . 즉 원래 경로이다 .
  • Labels : 에셋에 할당된 레이블을 표시한다 .

[ Tools ]

- Addressable 상단 툴바는 다음의 설정을 제공한다 .

  • New : 템플릿을 선택하여 새 그룹을 생성 , 혹은 스키마가 없는 Empty 상태로 둔다 . 이때 , 자체 템플릿이 있다면 별도의 옵션이 나타날 것이다 .
  • Profile : 활성 프로파일을 설정 , 어드레서블 빌드 및 로드에 사용되는 경로를 지정한다 .프로파일을 선택하거나 Manage Profile로 프로파일을 관리할수 있다 .
  • Tools : 다양한 어드레서블 툴을 사용 가능하다 .
    • Inspect system Setting : Addressable Asset Setting를 인스펙터창에서 연다 .
    • Check for Content Update Restrictions : 사전 업데이트 콘텐츠 검사를 실행한다 .
    • Window : 각종 어드레서블 기능창을열어준다 . Profile/Labels/Hosting/Addressable Report창 등이 있다 .
    • Group Views : 그룹을 표시하는 방법을 결정한다 . 해당 옵션들은 그룹 표시에만 영향을 미친다 . 
      • Show Sprite and Subobject Address : 그룹 목록에 스프라이트 및 하위 객체를 표시 , 부모 오브젝트만 표시하도록 설정
      • Group Hirearchy With Dashes : 이름에 대시 - 가 포함된 그룹을 대시가 그룹 계층 구조를 나타내는것처럼  표시 . 아래 예시와 같이 보여진다 . 
    • Play Mode Script : 활성 플레이 모드 스크립트를 정의한다 . 에디터상에서 어떻게 에셋에 엑세스 하는지 정한다 
    • Build : 콘텐츠 빌드 커맨드를 선택한다 .
      • New Build : 전체 콘텐츠 빌드를 실행할 빌드 스크립트를 선택한다 .기본으로 Default Build Script 사용
      • Update Previous Build : 이전 빌드를 기반으로 차등 업데이트를 실행한다 .
      • Clear Build Cache : 기존 빌드 아티팩트를 삭제할 커맨드를 선택한다 .

[ Play Mode Script  ]

- 플레이 모드에서 게임을 실행할 때 어드레서블 시스템이 어드레서블 에셋에 엑세스 하는 방법을 결정한다 .

- Unity 에디터 외부에서 애플리케이션을 빌드 , 실행할때의 에셋로드에는 영향을 미치지 않는다 .

  • Use Asset Database : 에디터 에셋 데이터베이스에서 에셋을 직접 로드 한다 .해당 옵션을 사용시 어드레서블 콘텐츠를 빌드할 필요가 없다 .실제 런타임 동작과는 다를 수 있지만, 빠른 반복 테스트에 유리하다 .
  • Simulation Groups :에셋이 빌드된 것처럼 시뮬레이션하여 로드한다 .실제 런타임 로드 방식과 유사하게 동작 ,어드레서블 콘텐츠가 빌드된 후의 동작을 더 잘 반영한다 . 로컬 파일을 사용하여 시뮬레이션하여 빠른 테스트가 가능.
  • Use Existing Build : 이전 콘텐츠 빌드를 통해 생성된 번들에서 에셋을 로드한다 . Default Build Script와 같은 빌드 스크립트로 전체 빌드를 실행해야 사용 가능하다 . 또한 원격 콘텐츠는 콘텐츠를 빌드하는데 사용된 프로파일의 RemoteLoadPath에서 호스팅 되어야 한다 .가장 정확한 테스트가 가능하다 .

[ 그룹 컨텍스트 메뉴 ]

- 그룹을 우클릭하면 나오는 메뉴

Remove Group(s) 그룹을 제거하고 연결된 스크립터블 오브젝트 에셋을 삭제한다. Unity는 그룹의 모든 에셋을 비 어드레서블 에셋으로 되돌린다 .
Simplify Addressable Names 경로와 유사한 컴포넌트 및 확장자를 제거하여 그룹 내 에셋의 이름을 줄인다 .
Set as Default 그룹을 기본 그룹으로 설정한다. 그룹을 명시적으로 할당하지 않고 에셋을 어드레서블로 표시하면 Unity가 에셋을 기본 그룹에 추가한다.
Inspect Group Settings Unity 프로젝트 창과 인스펙터 창에서 그룹 에셋을 선택하여 설정을 볼 수 있도록 한다.
Rename 그룹 이름을 편집할 수 있다.
Create New Group 그룹 템플릿을 기반으로 새 그룹을 생성한다.

[ 에셋 컨텍스트 메뉴 ]

- 에셋을 우클릭하면 나오는 메뉴

Move Addressables to Group 선택한 에셋을 다른 기존 그룹으로 옮긴다.
Move Addressables to New Group 현재 그룹과 동일한 설정으로 새 그룹을 생성하고 선택한 에셋을 해당 그룹으로 옮긴다
Remove Addressables 그룹에서 선택한 에셋을 제거하고 에셋을 비 어드레서블로 만든다.
Simplify Addressable Names 경로와 유사한 컴포넌트 및 확장자를 제거하여 선택한 에셋의 이름을 줄인다.
Copy Address to CLipboard 에셋의 할당된 주소 문자열을 시스템 클립보드로 복사한다.
Change Address 에셋의 이름을 편집한다.
Create New Group 그룹 템플릿을 기반으로 새 그룹을 생성한다. 이 경우 선택된 에셋은 이동하지 않는다.

6 . 그룹 템플릿 직접 만들어보기

[ 그룹 템플릿 ]

- 그룹 템플릿은 유니티가 새 그룹에 대해 생성하는 스키마 오브젝트 유형을 정의한다 .

- 해당 템플릿을 이용해서 그룹을 만들 수 있다 .쉽게 말해 그룹을 찍어내는 틀 .

- 아까 봤던 Packed Asset은 기본으로 제공하는 그룹 템플릿이다 . 


[ 그룹 템플릿 생성하기 ]

- Create - Addressable - Group Templates 폴더는 그룹 템플릿을 모아놓는 곳이다 .

- 해당 폴더에서 우클릭 - Addressables - Group Templates - Blank Group Template로 그룹 템플릿을 설정 할 수 있다 .

- 생성후 해당 그룹에 대한 설명을 기입 할 수 있다 .

- 이후 Add Schema로 스키마를 추가하여 설정을 구체화 할 수 있다 .


[ Profile ]

1 . Profile 소개

[ Profile ]

- 어드레서블 빌드 스크립트에서 사용하는 변수집합이 포함되어 있다 .

- 빌드 아티팩트를 저장할 위치 및 런타임시 로드할 위치와 같은 정보가 정의되어 있다 .

- 자체 빌드 스크립트에 사용될 커스텀 프로파일 변수를 추가 가능하다 .

- 프로파일은 개발 프로세스에 따라 다르게 설정 가능하다 . ex ) 개발 , 테스트 , 릴리스 등


2 . Profile 생성하기

[ Profile 생성하기 ]

- Addressable Profile - Create - Profile을 선택한다 .

- Build Path :  콘텐츠 빌드후 콘텐츠를 저장할 위치 .

- Load Path :  앱이 런타임에 빌드된 콘텐츠를 찾는 위치 .


[ 활성 Profile 설정하기 ]

- 원하는 프로파일 선택 - 우클릭 - Set Active

혹은 Addressable Asset Setting  에서 직접 설정하는 방법도 존재한다 .


3 . Profile 변수

[ Profile변수란 ]

- 어드레서블 설정을 변경하는데 사용할 수 있는 일반적인 키 / 값의 조합이다 .

  • Standard : 스탠드얼론 키 / 값 페어이다 .
  • Path Pairs :  특수한 명명 규칙을 사용하여 변수 집합을 연결한다 . 주로 빌드 및 로드 경로 변경에 사용 .

[ Standard변수 추가하기 ]

두가지 종류의 변수를 추가 가능하다 . 변수들은 모든 프로파일에 추가된다 .

  • Variable : 단일 값을 정의하는 기본 변수 .
  • Build and Load Path Variables : 두개의 경로 값 세트를 정의하는 경로 페어 . 빌드 / 로드 경로이다 .

[ 기본 경로 값 ]

빌드 및 로드 경로의 기본값은 다음과 같다 . 해당 값은 경로페어의 Bundle Location에서 고를 수 있다 .

  • Built - In : 로컬 경로
  • Editor Hosted : 원격 경로

- 원격 로드 경로와 빌드 경로는 변경 가능하다 . 그러나  일반적으로 로컬 경로 값은 변경 하지 않는게 좋다 . 

- 어드레서블은 플레이어 빌드중 데이터를 Addressable.BuildPath에서 Streaming Assets폴더로 복사하기만 한다 .

- 즉 , 임의로 지정된 경로는 위 과정을 처리해주지 않는다 .

- 그렇기에 로컬빌드 위치를 변경한 경우 해당 위치에 생성된 로컬 빌드 아티팩트StreamingAssets 폴더에 직접 복사해야 한다.


[ 프로파일 변수 구문 ]

모든 프로파일 변수는 string 유형이다 . 구문 지정을 사용하여 정적 프로퍼티 나 다른 변수에서 변수 값 전부 혹은  일부를 파생 할 수 있다 . 어드레서블은 빌드중 그룹 처리시 문자열을 평가 , 그 결과를 카탈로그에 쓴다 .

  • Buckets [] : 어드레서블은 빌드시 대괄호로 둘러싸인 엔트리를 평가한다 . Build Target등의 다른 프로파일 변수 또는 UnityEngile.AddressableAssets.Addressables.BuildPath와 같은 코드 변수가 될 수도 있다 . 
  • Braces {} : 어드레서블은 런타임에 중괄호로 둘러싸인 엔트리를 평가한다 . 런타임 클래스의 코드변수를 사용 가능하다 . ex) UnityEngile.AddressableAssets.Addressables.RuntimePath

또한 정적 필드와 프로퍼티를 사용 할 수 있다 . 이름은 정규화된 이름이어야 하며 유형은 컨텍스트에서 유효해야 한다 .

예를 들자면 {}의 경우 런타임에 평가되기에 UnityEditor 네임스페이스의 클래스를 사용하지 못한다 .

 

기본 프로파일 변수 설정에 사용되는 코드 변수는 다음과 같다 .

  • UnityEditor.EditorUserBuildSetting.activeBuildTarget
  • UnityEngine.AddressableAssets.Addressables.BuildPath
  • UnityEditor.EditorUserBuildSettings.activeBuildTarget.RuntimePath

[ 프로파일 변수 예시 ]

{MyNamespace.MyClass.MyUrl}/content/[BuildTarget] 로드 경로는 trees.bundle이라는 에셋 번들을 생성하는 그룹에 설정된다 가정하자 . 

빌드 중 카탈로그는 해당 번들의 로드 경로를 {MyNamespace.MyClass.MyUrl}/content/Android/trees.bundle로 등록하고 다음 에셋 번들이름을 경로에 추가한다 . 어드레거블 시스템은 런타임에 카탈로그를 처리할때 , {MyNamespace.MyClass.MyUrl}을 평가하여 http://example.com/content/Android/trees.bundle을을 생성한다 .

 

+ 스트리핑은 최종 애플리케잉션을 최적화 하기 위해 빌드 프로세스중에 사용되지 않는 코드 , 에셋 리소스를 제거하는 프로세스 . 이때문에만약 MyNameSpace.MyClass.MyUrl이 스크립트에서 사용되지 않는다면 스트리핑되어 정상적으로 작동 하지 않을수도 있다 .이는 Link.xml 파일로 해결 가능 . 방식은 추후 자세히 다뤄보겠음 .


4 . Addressable Profile 창

[ Profile변수란 ]

  • Local.BuildPath : 애플리케이션과 함께 로컬로 설치하려는 에셋이 포함된 파일을 어디에 빌드할지 정의한다 . 기본적으로 Project Library 폴더 내부에 있다 . 
  • Local.LoadPath : 로컬로 설치된 에셋을 어디에 로드할지 정의한다 . StreamingAssets 폴더에 있다 . 어드레서블은 플레이어를 빌드시 StreamingAssets의 기본 위치에 빌드된 로컬 콘텐츠를 자동으로 포함하지만 , 다른 위치의 로컬 콘텐츠는 포함하지 않는다 . - 로컬 빌드 / 로드 경로는 기본값에서 바꾸지 않는게 좋다 .
  • Remote.BuildPath : 원격으로 배포하려는 에셋이 포함된 파일을 어디에 빌드할지 정의한다 .
  • Remote.LoadPath : 원격 콘텐츠 및 카탈로그를 다운로드할 URL을 정의한다 .
  • BuildTarget : 빌드 타겟의 이름을 설정한다 . 이는 현재 플랫폼 기준으로 바뀐다 . ex) 안드로이드라면 Android. 으로 바뀔것임 .

[ Addressable Asset Setting ]

1 . Addressable Asset Setting Reference

[ Addressable Asset Setting ]

- 어드레서블 에셋의 작동 방식을 관리한다 .

- Window - Asset Management - Addressables - Settings에서 확인 가능하다 .


[ Profile ]

  • Profile In Use : 어드레서블 빌드 스크립트에 사용되는 변수의 값을 결정하는 활성 프로파일을 선택한다 .
  • Manage Profiles : Profile 창을 연다 .

[ Diagnotics ]

  • Send Profiler Events : 
  • Log Runtime Exceptions : 에셋 로딩 작업에 대한 런타임 예외를 로깅 , 오류를 AsyncOpertationHandle.OperationExcaption 프로퍼티에 기록한다 

어드레서블 에셋은 기본적으로 경고와 오류만 로깅한다 .상세 로깅을 활성화 하려면 Player 설정창(Edit - Project Setting - Player)에서 Other Settings - Configuration 섹션으로 이동후 ADDRESSABLES_LOG_ALL 을 Scripting Define Symbols에 추가한다 .


[ Catalog ]

  • Player Version Override : 원격 카탈로그 이름을 만드는데 사용된 타임스탬프를 오버라이드 한다 . 활성시 원격 카탈로그의 이름은 Catalog_<Player Version Override>.json으로 지정된다 .
  • Compress Local Catalog : 압축된 에셋 번들 파일에서 카탈로그를 빌드한다 .카탈로그의 저장소 크기를 출이지만 빌드 시간과 카탈로그 로드 시간이 늘어난다 .
  • Build Remote Catalog : 원격 서버에 저장할 콘텐츠 카탈로그 사본을 만들어 원격 카탈로그 빌드가 가능하다 .
  • Only update catalog manually : 런타임에 어드레서블 시스템이 초기화 될 때 업데이트된 원격 카탈로그에 대한 자동 확인을 비활성화 한다 .
    [ Update a Previous Build ]

  • Check for Update Issues : 업데이트의 일부로 콘텐츠 업데이트 제한을 수행할지 여부와 결과를 처리하는 방법을 택한다 .
  • Content State Build Path : 기본 빌드 스크립트가 빌드하는 콘텐츠 상태 파일을 빌드할 위치를 설정한다 .

    [ Downloads ]

  •  Custom Certificate handler : 커스텀 인증서 처리에 사용할 클래스를 설정 . 이 목록에는UnityEngine.Networking.CertificateHandler 를 확장하는 프로젝트의 모든 클래스가 포함된다
  • Max Concurrent Web Requests : 동시 웹 요청의 최대수를 지정한다 . 한도를 초과한 요청은 대기열에 추가된다 . 최상의 다운로드 속도를 내려면 2 ~ 4 회 동시 다운로드를 권장한다 .
  • Catalog Download Timeout : 카탈로그 파일이 다운로드 되는데 기다려야 하는 시간을 설정 . 0은 타임아웃이 없다 .

[ Build ]

https://docs.unity3d.com/kr/Packages/com.unity.addressables%401.21/manual/AddressableAssetSettings.html#build

 

어드레서블 에셋 설정 레퍼런스 | Addressables | 1.21.17

어드레서블 에셋 설정 레퍼런스 프로젝트에서 어드레서블 에셋의 작동 방식을 관리하려면 Addressable Asset Settings 인스펙터를 사용하십시오. 인스펙터를 열려면 Window > Asset Management > Addressables > Set

docs.unity3d.com

위 문서를 참고하자 .


[ Build and Play Mode Scripts ]

- 프로젝트에 사용 가능한 IDataBuilder 스크립트를 설정한다 .

- 커스텀 빌드 / 플레이 모드 스크립트를 만드는 경우 이 목록에 추가해야 사용이 가능하다 .


[ Asset Group Templates ]

- 새 그룹을 만드는데 사용 할 수 있는 템플릿 목록을 정의한다 .

- 추가시 그룹창에서 새 그룹을 만들때 해당 템플릿을 볼 수 있다 .


[ Initialization Objects ]

- 프로젝트에 사용할 초기화 오브젝트를 설정한다 .

- 초기화 오브젝트는 IObjectInitializationDataProvider 인터페이스를 구현하는 스크립터블 오브젝트이다 .

- 런타임에 데이터를 어드레서블 초기화 프로세스로 전달 가능하다 .


[ Cloud Content Delivery ]

- 실험적 CCD 기능을 활성화 할 수 있다 .

 


[ Addressable Preference ]

1 . Addressable Preference Reference

[ Addressable Preference]

- 어드레서블 에셋의 Preference 세팅을 결정한다 . 각 값을 하나씩 살펴보자 .


[ Debug Build Layout ]

- 해당 값 활성화시 빌드 시스템이 빌드 레이아웃 보고서를 생성한다 .

- 빌드 레이아웃 보고서는 해당값 활성화시 빌드후 Library/com.unity.addressables/buildlayout 에 생성된다 .

- 빌드에 대한 자세한 내용과 통계 정보를 알 수 있다 .

- 활성화시 빌드 시간이 증가되기에 비활성화 한다 . 디버그시 사용하면 좋은 옵션이다 .


[ Player Build Settings ]

- 해당 옵션은 유니티가 플레이어 빌드를 진행하면 어드레서블 빌드를 함께 생성하는지를 결정한다 .

- 빌드를 한꺼번에 하면 편리할 수 있지만 , 어드레서블 에셋의 수정이 없는데도 어드레서블 콘텐츠가 빌드되기에 비효율적이다 .

- 또한 빌드시간 역시 늘어난다 .

  • Build Addressables content on Player Build: 플레이어를 빌드할 때 항상 어드레서블 콘텐츠를 빌드한다 .
  • Do not Build Addressables content on Player Build: 플레이어를 빌드할 때 어드레서블 콘텐츠를 빌드하지 않는다 . 만약 어드레서블 콘텐츠가 수정되었다면 수동으로 직접 빌드해야 한다 .

위의 전역값은 어드레서블 세팅에 정의된 값으로 오버라이드 될 수 있다 .

- Use global Settings가 되어있는경우 Preference의 값을 따른다 .

- 그 외의 값은 Prefererence의 값보다 우선시되게 된다 .

 

출처

https://docs.unity3d.com/kr/Packages/com.unity.addressables%401.21/manual/AddressableAssetSettings.html#build

 

어드레서블 에셋 설정 레퍼런스 | Addressables | 1.21.17

어드레서블 에셋 설정 레퍼런스 프로젝트에서 어드레서블 에셋의 작동 방식을 관리하려면 Addressable Asset Settings 인스펙터를 사용하십시오. 인스펙터를 열려면 Window > Asset Management > Addressables > Set

docs.unity3d.com