Unity에서 Resources, AssetBundle, Addressable Asset은 게임의 에셋 관리와 로딩을 다루는 주요 방식들입니다. 각각의 차이점은 사용 방식, 성능, 그리고 관리의 편의성에서 나타납니다.
1. Resources
개요 : Resources는 Unity 프로젝트에서 Resources 폴더에 에셋을 넣고, 런타임에 이를 로드하는 방식입니다.
특징 :
- 에셋은 빌드 시 하나의 큰 파일로 통합되어 빌드에 포함됩니다.
- 런타임 로드: Resources.Load 메서드를 사용하여 에셋을 동적으로 로드합니다.
- 전체 메모리 로드: 에셋이 필요하지 않아도 프로젝트의 모든 Resources 데이터가 메모리에 로드되므로 메모리 낭비가 발생할 수 있습니다.
- 에셋 업데이트: 에셋 교체를 위해 빌드 전체를 다시 생성해야 합니다.
장점 :
- 사용이 간단하고 빠르게 동적 로딩 구현 가능.
- 작은 규모의 프로젝트에서 적합.
단점 :
- 대규모 프로젝트에서 메모리 관리가 어렵고 최적화가 제한적.
- 업데이트를 위해 빌드 재배포가 필요.
2. Asset Bundle
개요 : AssetBundle은 Unity의 에셋 패키징 방식으로, 에셋을 별도로 묶어 네트워크나 로컬 저장소에서 다운로드하여 로드할 수 있습니다.
특징 :
- 에셋을 그룹으로 묶어서 관리하며, 각 번들은 별도로 저장됩니다.
- 런타임에 AssetBundle.LoadFromFile 또는 AssetBundle.LoadFromMemory를 통해 로드.
- 에셋 번들 업데이트 가능: 특정 에셋 번들만 교체하여 게임 업데이트 시 용량을 절약할 수 있습니다.
- 수동으로 의존성 관리가 필요.
장점 :
- 런타임 메모리 사용을 줄이고 에셋을 동적으로 관리 가능.
- 필요한 에셋만 로드하여 메모리 최적화.
- 클라이언트 패치/업데이트에 유용.
단점 :
- 사용과 관리가 복잡하며, 의존성 문제 발생 가능.
- 번들 빌드 및 테스트 과정에서 추가 시간이 필요.
- 사용법이 비교적 낡고 Addressable로 대체되는 추세.
3. Addressable Asset
개요 : Addressable은 Unity에서 제공하는 최신 에셋 관리 솔루션으로, 에셋 관리, 로드, 업데이트 과정을 자동화하여 쉽게 처리할 수 있습니다.
특징 :
- 에셋에 "주소(Address)"를 부여하여 어디서나 이름으로 로드 가능.
- AssetBundle을 기반으로 동작하지만 의존성을 Unity가 자동으로 관리.
- 로컬 및 원격 저장소 모두에서 에셋 로드 가능.
- Unity의 메모리 관리 및 로드 타이밍 최적화를 지원.
장점 :
- 에셋 로드/업데이트 과정의 복잡성을 대폭 줄임.
- 메모리와 의존성 관리 자동화.
- 로컬과 원격 저장소를 쉽게 설정할 수 있어 서비스 운영에 적합.
- AssetBundle보다 사용이 쉽고 유지보수가 용이.
- 에셋 그룹화를 통해 로드 정책 설정 가능 (예: 우선순위, 로드 시점).
단점 :
- 초기 설정에 익숙해지는 데 시간이 걸릴 수 있음.
- 작은 규모 프로젝트에서는 오히려 과도한 도구일 수 있음.
'Unity > 유니티 공부' 카테고리의 다른 글
유니티 - 직렬화(Serialization) (1) | 2024.12.05 |
---|---|
유니티 - 드로우 콜과 배칭 (0) | 2024.12.05 |