본문 바로가기

유니티 공부

Addressable

1. Addressable이란?

  • 유니티에서 제공하는 비동기 에셋 관리 시스템
  • 에셋을 주소를 통해 런타임에 동적으로 로드/언로드 할 수 있도록 해주는 기능

 

2. Addressable을 쓰는 이유?

1) Resource 단점

  • Resource 폴더는 에셋을 빌드 시 전부 포함시켜 로드하므로 용량을 관리를 하지 못하면 스토어에 제한이 걸릴 수 있음
  • 프로젝트 빌드 크기 증가
  • 프로젝트 초기 실행 시간 증가
  • 일부 불필요한 에셋도 전부 빌드 하기 때문에 과도한 메모리를 사용으로 비효율적

2) 에셋 번들 단점

  • 에셋의 경로를 매핑해 두지 않으면 서버데이터 스크립터블 오브젝트에 경로를 담아 사용해야하는 추가 작업이 필요
  • 추가 작업 없이 사용한다면 경로에 대한 부분을 하드 코딩으로 처리해야 되는 우려 사항이 있음

 

3) Addressabkes의 장점

  • 주소 기반 로딩 : 이름이나 Label로 에셋을 로드 가능
  • 비동기 로딩 : LoadAsync를 통해 필요한 순간에 로딩(메모리 최적화에 좋음)
  • 메모리 관리 : Release()를 통해 로드한 에셋을 메모리에서 제거 가능
  • 빌드 및 배포 분리 : 원격 서버/CDN에서 에셋을 따로 배포 가능
  • 라벨 기반 그룹 로딩 : 여러 에셋을 하나의 Label로 묶어 일괄 로딩 가능
  • 에디터 도구 지원 : Addressables Groups UI로 에셋 관리 편함

 

3. Addressables 기본 구조

1) Address

  • 각각의 에셋에 부여하는 고유 이름(기본은 경로 기반 이름, 수정 가능)
  • 코드에서 이름으로 로드 가능
Addressables.LoadAssetAsync<GameObject>("MyPrefabAddress");

 

2) Label

  • Label로 묶인 에셋을 한 번에 로드 가능
Addressables.LoadAssetsAsync<GameObject>("MyLabel", obj => { });

 

3) Group

  • Addressables 창에서 에셋을 묶는 단위
  • 빌드 설정, 번들링 등을 조절 할 수 있지만, 그룹 이름으로 직접 로드는 불가능

 

3. Addressables 주요 용어 및 기능

  • Build
    • New Build > Default Build Script : 에디터에서 컨텐츠를 빌드하는 방법
    • Update a Previous Build : 변경된 항복만 다시 빌드
    • Clean Build : 빌드에 넣은 번들을 모두 지우고 새로 세팅하고 싶을 때 사용
    • API 함수를  사용하여 컨텐츠를 빌드하려면
      • AddressableAssetSettings, BuilldPlayerContent()를 사용
  •  Play Mode Script
    • Use Asset DataBase : 에디터 기반에서만 동작하는 모드, 런타임과 다소 차이가 있을 수 있음
    • Simulate Groups : 이걸로 테스트가 필요함, 어드래스 기능에 대한 테스트, 실제 번들을 이용하는 방식은 아님
    • Use Existing Build : 릴리즈와 동일한 환경에서 테스트, 리모트 환경에 대한 테스트가 동시에 이루어짐, 최종
  • Headers

 

  • DownLoadDependenciesAsync
    • 서버에서 다운로드

 

  • LoadAssetAsync
    • 에셋을 메모리에 로드를 하는 함수
    • 내부에 캐싱 시스템이 있다

  • InstantiateAsync
    • 로드된 게임오븢젝트를 생성시켜주는 함수

 

  • ClearDepencyCacheAsync
    •  

 

4. Addressables 사용 - Remote

  • Window > Asset Management > Addressables > Hosting
  • 핫스팟에서 쓰기 어려움

  • Disable Catalog Update : 사용자에게 업데이트를 할지 확인 받고 업데이트를 한다면 체크 아니면 체크 해제
  • Build Remote Catalog : 체크 필수
  • Unique Bundle IDs : 체크 필수
  • Build Path/Load Path : Remote 주소 확인용

 

'유니티 공부' 카테고리의 다른 글

UI Toolkit  (0) 2025.06.29
Object Pooling  (2) 2025.06.09
유니티 게임 WebGL 빌드 하기  (0) 2025.06.06
Update, FixedUpdate, LateUpdate의 차이점  (1) 2025.04.24
UI - MVC, MVP, MVVM 패턴  (0) 2025.03.19