이전 페이지 : https://dean83.tistory.com/207
리소스 관리 - Addressable (4) - Scene
이전 페이지 : https://dean83.tistory.com/206 리소스 관리 - Addressable (3) - Sprite 이전 페이지 : https://dean83.tistory.com/205 리소스 관리 - Addressable (2) 이전 페이지 : https://dean83.tistory.com/204 이번에는 inspector 에
dean83.tistory.com
Addressable 리소스 들은 Unity 상단메뉴 -> Window -> Asset Management -> Addressables -> Group 을 선택하면,
리스트업 되어 있다.
해당 리소스 들을 라벨로 분류해 놓으면, 해당 라벨에 속한 리소스들을 한번에 로딩해 올 수 있다.
또한, 라벨링을 잘 해두어야 리소스 로딩시 메모리 사용 낭비를 줄일 수 있다.
1. 라벨 추가 및 배정
- 위에 언급한 Addressables Group 창 -> 각 리소스별 Labels 컬럼 드롭다운 -> Manage Labels 클릭
- 라벨 추가
- 각 리소스에 원하는 라벨 배정
- 라벨은 하나의 리소스에 여러개를 다중으로 배정할 수 있다. (예 : 리소스A 에 라벨1, 라벨2, 라벨3 ...)

2. 라벨을 이용한 리소스 동시 로딩
- LoadAssetsAsync 함수 호출시 인자값으로 불러올 라벨 리소스를 설정할 수 있다
- Union : 해당 라벨들이 하나라도 있는 리소스 불러오기
- Intersection : 해당 라벨들을 모두만족하는 리소스만 불러오기
- UseFirst : 첫번째 라벨과 매칭되는 리소스만 불러오기
...
private List<string> labels = new List<string>(){"lb1","lb2","lb3",...}; //위에서 설정한 라벨명
private AsyncOperationHandle<IList<GameObjevct>> m_handles;
...
m_handles = Addressables.LoadAssetsAsync<GameObject>(labels, null, Addressables.MergeMode.Union);
m_handles.Complete += OnComplete;
....
void OnComplete(AsyncOperationHandle<IList<GameObjevct>> obj)
{
if(obj.Status == AsyncOperationStatus.Succeeded)
{
IList<GameObject> result = m_handles.Result;
}
}
....
vod OnDisable()
{
m_handles.Complete -= OnComplete;
}
3. Addressable 빌드옵션 변경 (중요!)
- 라벨별로 리소스들을 나누어 보관할 수 있다.
- 이렇게 해야 리소스를 로딩할때 속도도 빠르고, 메모리도 덜 사용하게 된다 (불필요한 리소스 로딩x)
- 위의 라벨울 이용하여 리소스를 분리 한 후 다음의 작업을 한다
- 유니티 상단 메뉴 -> Window -> Asset Management -> Addressables -> Group 에서 각 그룹 선택
- Inspector 창 -> Content Packing & Loading -> Bundle Mode 드롭다운 -> Pack Together By Label 선택
'Unity' 카테고리의 다른 글
| 리소스 관리 - Addressable (7) - AssetLabelReference (0) | 2024.02.05 |
|---|---|
| 리소스 관리 - Addressable (6) - 리소스 주소 활용 (2) | 2024.02.02 |
| 리소스 관리 - Addressable (4) - Scene (0) | 2024.02.02 |
| 리소스 관리 - Addressable (3) - Sprite (0) | 2024.02.02 |
| 리소스 관리 - Addressable (2) - Inspector 이용 (0) | 2024.02.02 |