Addressable Asset System

Ricon·2025년 3월 27일

Unity

목록 보기
6/7

Addressable Asset System이란

복잡한 Asset 관리와 동적 로딩을 효율적으로 처리할 수 있도록 Unity에서 제공하는 기능
특히 게임에서 Resource(Texture, Prefab, Audio등)가 많아지고, 이를 Runtime에 Loading하거나 갱신할 때 유용하게 사용됨

Asset을 주소(Address)로 식별하고, Runtime 시 해당 Address를 통해 Asset을 동적으로 Load할 수 있도록 해주는 Unity Package

Addressable을 쓰면 :

  • 필요한 Resource만 그때그때 불러올 수 있고
  • 필요 없어지면 Memory에서 제거할 수 있고
  • 나중에 Server에서 받아오게 할 수 있다

예를 들어 게임에 Boss Prefab 이 있다고 가정한다면

  • 일반 방식
    • Boss Prefab은 무조건 App 안에 포함됨
    • 게임을 시작할 때 Loading이 길어질 수도 있음
    • Memory에 항상 올라와 있을 수도 있음
  • Addressables 방식
    • Boss Prefab을 "주소"로 관리함 ("BossPrefab" 같은 이름)
    • Boss가 등장할 때만 불러오고, 끝나면 Memory에서 제거
    • 심지어 Server에서 받아오게도 할 수 있어서 Content Update도 가능

기존 방식 VS Addressable

기존 방식Addressable
Resources Folder에 넣고 Resource.Load()로 Loading주소로 관리하고 Addressable.LoadAssetAsync() 사용
AssetBundle Build/Version 관리가 복잡함자동 Build/Version 관리 지원
Memory 관리 어려움자동 Memory 관리(Caching,Unload)가능
Local 또는 Server Resource수동 관리Cloud CDN, 원격 Loading 쉬움

사용 예시

//로딩 예시
Addressables.LoadAssetAsync<GameObject>("MyCube").Completed += handle =>
{
    if (handle.Status == AsyncOperationStatus.Succeeded)
    {
        GameObject obj = handle.Result;
        Instantiate(obj);
    }
};

//Memory 해제
Addressables.Release(handle);

Addressable Groups

  1. Project에서 Addressable로 지정할 Asset을 선택
  2. Inspector에서 Addressable을 True로 지정
  3. Addressable Groups에서 확인 가능

구조

용어
AddressResource에 붙인 이름표(예:"BossPrefab")
GroupResource를 Folder처럼 묶어 놓는 단위
Catalog주소랑 실제 Resource를 연결해주는 주소록
LoadAssetAsync주소로 Resource를 불러오는 함수
Release더 이상 필요 없는 Resource를 Memory에서 정리
LabelAddressable에서 Resource에 붙이는 "분류용 꼬리표" -> Label로 묶인 Asset들을 한 번에 Download하거나 Load할 수 있음

0개의 댓글