Unity에서의 에셋 관리와 Addressables

에셋 관리

 

1. 개발 초기에는 Resources.LoadAsync와 같이 많이 사용함.

하지만 이 방법은 빌드 시간이 증가되고 에셋 관리가 힘듦

 

2. 진행이 어느정도 되면 AssetBundle을 사용

AssetBudle.LoadFromFileAysnc

이건 번들을 로컬 디스크에 저장해서 에셋을 불러오는 방법

 

3. 런칭에 가까워지면 서버에서 다운받도록

UnityWebRequest.GetAssetBundle(bundleUrl); 사용

번들을 서버에서 가져와서 디스크 저장하고, 디스크에서 다시 로드하는 방법

 

하지만 이 방법은 dependency 처리가 되어있지 않아서 사용하면 안 된다.

에셋은 서로 dependency가 있다. ex) 오브젝트1이 다른 머티리얼, 셰이더를 참조한다.

에셋번들은 다른 에셋번들에 종속성이 걸려있을 수 있다. 근데 이 종속관계를 무시하고 불러오면 메모리에 에셋이 중복되게 올라갈 수 있다. 그래서 dependency를 고려해서 불러오는 코드를 짜야한다.(6:48)

 

이러한 단점을 보완한 게 Addressables이다.

 

4. 스크립트에서 public AssetReference name1;

이렇게 하면 하이어라키에서 에셋을 선택할 수 있다.

그리고 name1.InstantiateAsync()로 비동기로 로드해서 사용할 수 있다.

 

Analyze 기능에서 에셋의 dependecy를 확인할 수 있고, 정적분석(코드분석)을 해서 dependecy가 어떤 식으로 걸려있는지 확인할 수 있다.

 

참고로 Addressables는 모바일에서는 많이 사용되고, 또 DLC에 많이 사용된다.

 

 

* 참고 영상

https://www.youtube.com/watch?v=3f2XjEGDZ2s&t=2s