728x90
반응형

Unity Addressables의 개념과 실전 적용 방법
Unity에서 리소스를 효율적으로 관리하기 위한 방법 중 하나가 바로 Addressables 시스템입니다. Addressables은 기존의 Resources나 AssetBundle 방식의 단점을 보완하며, 런타임에서 동적으로 리소스를 로드하고 메모리 관리를 보다 효과적으로 수행할 수 있게 도와주는 Unity의 공식 시스템입니다.
Addressables이란?
Addressables은 Unity의 에셋 관리 시스템으로, 리소스들을 **"주소 기반"**으로 쉽게 로딩하고 관리할 수 있게 해줍니다. 사용자는 각 에셋에 고유 주소를 부여하고, 이를 통해 코드에서 쉽게 접근할 수 있습니다.
주요 장점
- Resources 폴더의 대체
- 런타임 동적 로딩 및 언로딩 가능
- AssetBundle보다 사용이 간편
- 메모리 최적화
- 클라우드 배포도 가능 (Remote Hosting)
기본 설정 방법
- 패키지 설치
- Unity Package Manager에서 Addressables 패키지를 설치합니다.
- Addressable Group 만들기
- 프로젝트 창에서 리소스에 우클릭 > Addressable 체크 > 그룹 설정
- 주소 이름 설정
- Addressables 윈도우에서 각 에셋의 이름을 지정하거나 자동 할당된 주소를 사용
런타임 로딩 예제
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class LoadPrefab : MonoBehaviour
{
public string prefabAddress = "MyUIPrefab";
void Start()
{
Addressables.LoadAssetAsync<GameObject>(prefabAddress).Completed += OnPrefabLoaded;
}
void OnPrefabLoaded(AsyncOperationHandle<GameObject> handle)
{
if (handle.Status == AsyncOperationStatus.Succeeded)
{
Instantiate(handle.Result);
}
}
}
리소스 해제 방법
Addressables.Release(handle);
메모리 누수 방지를 위해 LoadAssetAsync 후에는 반드시 Release 해주는 습관이 필요합니다.
주의할 점 및 팁
- 비동기 로딩이므로 async-await 방식과 함께 쓰면 더 깔끔한 코드를 작성할 수 있습니다.
- 에셋의 참조 관계가 꼬이지 않도록 주의해야 합니다. Addressables 그룹 간 종속성도 확인하세요.
- Remote Hosting을 사용할 경우, CDN 설정이나 버전 관리를 신경 써야 합니다.
- 개발 중 Build > New Build > Default Build Script를 자주 해줘야 적용 사항이 반영됩니다.
Addressables vs Resources vs AssetBundle
항목ResourcesAssetBundleAddressables
| 편의성 | 매우 쉬움 | 번들화 필요 | 중간 (툴 지원) |
| 빌드 사이즈 | 커짐 | 최적화 가능 | 최적화 + 관리 쉬움 |
| 런타임 로딩 | 가능 | 가능 | 가능 + 주소 기반 |
| 권장 여부 | (비권장) | (고급용) | (권장) |
Addressables은 이제 Unity에서 리소스를 효율적으로 다루기 위한 사실상 표준입니다. 초기 설정만 잘 해두면, 런타임에서 리소스를 동적으로 로딩하고 메모리도 깔끔하게 관리할 수 있어 대규모 프로젝트에서 특히 유용합니다.
Addressables 기반 리소스 관리로 전환해보는 것을 적극 추천
728x90
반응형
'Unity' 카테고리의 다른 글
| Unity에서 IEnumerator와 Coroutine의 모든 것 (0) | 2025.04.21 |
|---|---|
| Unity LineRenderer는 무엇인가? (0) | 2025.04.18 |
| Unity에서 GetComponent 제대로 쓰는 법 (0) | 2025.04.16 |
| Unity에서 CompareTag를 사용하는 이유와 주의사항 (0) | 2025.04.15 |
| Unity 애니메이션에 대하여 (0) | 2025.04.14 |