에셋 관리
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에 많이 사용된다.
* 참고 영상