-
Unity] Addressables 사용하기Unity 2025. 2. 24. 16:26반응형
Addressables란?
- 리소스(Asset) 관리를 효율적으로 할 수 있도록 지원하는 시스템.
- 게임 내에서 동적으로 에셋을 load 및 unload 하여 관리할 수 있음
- Resources 폴더보다 개선된 로드 방식을 제공
- Remote Hosting을 지원하여 클라우드에서 다운로드 가능
- Asset Bundle을 내부적으로 활용하지만, 훨씬 더 자동화되고 편리한 방식으로 사용 가능
- Scene 로딩도 Addressables 로 가능 (SceneManager.LoadScene() 대신 사용 가능)
장점
- 메모리 최적화
- 비동기 로드로, 필요한 순간에 에셋 로드 가능
- 사용하지 않는 에셋을 unload하여 메모리 사용량 최소화
- 앱 시작 시 불필요한 로드를 줄여 시작 시간 단축
- 빌드 크기 감소
- Addressables에 등록한 객체들만 빌드 되어 빌드 사이즈 절감
- 쉬운 관리
- 폴더 위치 변경 시 자동 갱신
- 에셋 이름 변경 용이하여 코드에서 덜 불편하게 호출할 수 있음
- 에셋을 묶음 단위로 관리 가능
- 로드하려는 에셋의 종속들도 모두 자동으로 로드
- 시스템과 연계 가능
- 리소스를 원격 서버에서 가져와 패치 가능 → 게임 업데이트 없이 새로운 콘텐츠 추가 가능.
- 클라우드에서 필요할 때 동적 다운로드 가능
단점
- 비동기 로드를 사용하므로, 로딩 중 성능 저하가 발생할 수 있음
→ 미리 로드 해놓아 성능 저하를 방지할 수 있다 - Addressables API가 콜백 기반이라 람다식을 자주 사용하다보니 코드가 길고 복잡해 진다.
- 초기 설정이 번거로움
설치 및 사용
- 유니티 엔진 - window - package Manager - Packages : Unity Registry - Addressables 설치

- window - Asset Management - Addressables 에서 관련 기능들을 살펴볼 수 있다.

- 위에서 Groups 를 클릭하면 해당 창 생성. Create Addressables Settings 클릭

- 아래와 같은 그룹 패널창이 나타나는데, Addressable 기능을 사용할 리소스들은 Addressable 체크 박스에 체크를 해줘야 한다. 체크하면 Groups 목록에 나타난다.


- Group Name \ Addressable Name : 리소스 명칭, 쉽게 변경 가능
- Path : 리소스 위치
- Labels : 리소스들을 하나의 그룹으로 묶음
관련 코드
1. 리소스 위치 조회
Addressables.LoadResourceLocationsAsync()
AsyncOperationHandle<IList<IResourceLocation>> opHandle = Addressables.LoadResourceLocationsAsync("MyLabel", typeof(GameObject));- 특정 라벨(Label) 을 가진 리소스들의 위치를 조회하는 함수.
- 리소스를 직접 로드하는 것이 아니라, 어떤 리소스들이 존재하는지 리스트를 반환.
2. 개별 리소스 로드
Addressables.LoadAssetAsync<T>()
AsyncOperationHandle<T> handle = Addressables.LoadAssetAsync<T>("MyAssetKey");- 개별 리소스를 비동기적으로 로드하는 함수.
- 비동기이므로 완료 시점을 Completed 이벤트에서 확인해야 함.
3. 프리팹 인스턴스화
Addressables.InstantiateAsync()
AsyncOperationHandle<GameObject> handle = Addressables.InstantiateAsync("EnemyPrefab");- Addressables에서 관리하는 프리팹을 로드하고 즉시 생성(Instantiate).
- 자동으로 메모리 관리되지만, 사용이 끝나면 반드시 Release()로 해제해야 함.
4. 리소스 해제 (메모리 관리)
Addressables.Release()
Addressables.Release(handle);- 로드한 리소스를 해제하여 메모리를 관리하는 함수.
- LoadAssetAsync(), InstantiateAsync() 등으로 로드한 모든 리소스는 Release()로 해제해야 메모리 누수를 방지할 수 있음.
5. 리소스 그룹 언로드
Addressables.UnloadSceneAsync()
Addressables.UnloadSceneAsync(sceneHandle);- Addressables을 통해 로드한 씬(Scene)을 언로드(Unload).
- 씬이 더 이상 필요 없을 경우 메모리 해제를 위해 사용.
6. 원격 다운로드된 리소스 삭제
Addressables.ClearDependencyCacheAsync()
Addressables.ClearDependencyCacheAsync("MyAssetKey");- 원격 다운로드한 리소스를 캐시에서 삭제하여 디스크 공간을 확보하는 함수.
- 클라우드에서 업데이트된 리소스를 강제 다운로드해야 할 때 유용.
7. Addressables 리소스 업데이트 확인
Addressables.CheckForCatalogUpdates()
Addressables.CheckForCatalogUpdates();- 원격 서버에서 Addressables 리소스 업데이트가 있는지 확인하는 함수.
8. Addressables 리소스 업데이트 다운로드
Addressables.UpdateCatalogs()
Addressables.UpdateCatalogs();- 원격에서 리소스 업데이트가 있으면 다운로드하여 최신 상태 유지.
9. 특정 리소스가 이미 로드되었는지 확인
Addressables.IsValidHandle()
Addressables.IsValidHandle(handle);- 특정 리소스 핸들이 유효한지 검사.
10. Completed 이벤트
- Addressables의 비동기 작업이 끝나는 시점에 실행되는 이벤트.
- LoadAssetAsync(), InstantiateAsync() 등의 비동기 함수가 완료되었을 때 실행할 코드를 등록할 수 있음.
- 콜백 함수처럼 동작하며, 로드가 끝나기 전에 실행되는 것을 방지.
더보기본 내용은 틀린 내용이 있을 수 있으며, Chat GPT 및 아래 게시글을 참고하였습니다.
틀린 내용 또는 추가할 내용은 댓글로 남겨주시면 즉각 반영하겠습니다.https://blog.naver.com/cdw0424/221636733877
유니티(Unity) - Addressable(어드레서블) 사용법(1). 설치 및 준비
패키지 매니저에서 어드레서블 패키지를 설치한다. 윈도우탭 - Asset Management(에셋 매니지먼트) - Ad...
blog.naver.com
https://sam0308.tistory.com/71
[Unity] Addressable 기능
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다. ※ 해당 포스팅은 Unity 2021.3.15f1 버전을 기준으로 작성되었습니다. 이번 포스팅에서는 유니티의
sam0308.tistory.com
https://devshovelinglife.tistory.com/398
[Unity] 어드레서블 에셋(Addressable Asset)의 모든것
리소스 폴더 사용장점은 사용하기에 편리하지만, 리소스폴더에 메모리는 최대한 줄이도록 한다. 시작 시 최소한의 에셋만 남겨두어야겠지만 경계해야 한다. 단점)1. apk사이즈가 커진다.2. 앱 시
devshovelinglife.tistory.com
[실전 게임 코드 리뷰] 유니티 캐주얼 게임 (엘리스팡) 강의 | Rookiss - 인프런
Rookiss | , 유니티로 만든 실제 게임 소스코드,내 손으로 직접 파헤쳐보세요! [사진] [사진] 당장 만들어보고 싶은 게임이 딱히 없어요. [사진] 방대한 규모의 프로젝트는 시작하는 데 부담이 돼
www.inflearn.com
https://docs.unity3d.com/Packages/com.unity.addressables@2.3/manual/index.html
Addressables package | Addressables | 2.3.16
Addressables package The Addressables package provides tools and scripts to organize and package content for your application, and an API to load and release assets at runtime. When you make an asset Addressable, you can use that asset's address to load it
docs.unity3d.com
https://unity.com/kr/blog/engine-platform/addressables-planning-and-best-practices
Addressables: 계획 및 베스트 프랙티스
이 블로그 게시글에서는 유니티 시니어 테크니컬 프로덕트 매니저 제프 리센미가 프로젝트에서 Addressables 시스템을 최대한 활용하기 위해 개발자가 가장 중요하게 고려해야 할 사항에 대해 소
unity.com
반응형'Unity' 카테고리의 다른 글
Git] Unity 프로젝트에 원격 저장소 브랜치 덮어씌우기 (0) 2025.03.12 Unity] JSON 사용해서 데이터 관리하기 (1) 2025.03.05 Unity] Unity Shader Graph 사용해보기 (4) 2024.12.16 Unity] 색을 숫자로 표현하기, 빛의 삼원색 (4) 2024.12.13 Unity] 모바일광고 넣기 - 1: Google AD 사용하기 (4) 2024.12.12