1. 게임 플레이 중 메모리 부하를 줄일 수 있다.
- 특히나 모바일에서는 메모리가 꽤나 제한적이다.
- 어드레서블을 이용한다면 효율적으로 메모리를 관리할 수 있기 때문에 메모리를 절약할 수 있다.
- 씬을 실행할 때, 인스펙터에 직접 참조되어있다면 사용하지 않더라도 씬이 로드될 때 같이 메모리에 올라간다.
일반적인 코드
모든 List<Material>의 요소들이 메모리에 올라간다.
public class MyClass : MonoBehaviour
{
[SerializeField] List<Material> _materialList;
[SerializeField] MeshRenderer _renderer;
public void ChangeMaterial(int index)
{
_renderer.material = _materialList[index];
}
}
어드레서블 코드
사용할 때 동적으로 메모리에 올리고 사용한다.
public class MyClass : MonoBehaviour
{
[SerializeField] private List<AssetReference> _materialList;
[SerializeField] MeshRenderer _renderer;
public IEnumerator ChangeMaterialCoroutine(int index)
{
var load = _materialList[index].LoadAssetAsync();
yield return load;
_renderer = load.Result;
}
}
2. 추가 다운로드 구현이 가능하다.
모바일 앱 마켓에서 앱 용량 제한은 구글 150MB정도로 상당히 작은 편이다.
또한 앱을 마켓에서 업데이트하기 위해서는 검토시간이 꽤 걸리기 때문에, 별도로 추가 다운로드를 구현하면
앱 업데이트 없이 추가 컨텐츠를 다운로드하게 할 수 있다.
3. 빌드 / 에디터 플레이 테스트 시간이 줄어든다
앱에 포함될 컨텐츠가 별도의 파일로 빠지기 때문에, 매번 빌드할 때마다 이 파일들은 제외해서 빌드한다.
또한 앞서 말했던 것과 같이 실행하지 않은 동작에 필요한 것들을 미리 로드하지 않기 때문에,
특정 기능만을 테스트한다면 해당 부분에 대한 에셋들만 로딩할 수 있어 로딩 시간이 줄어 든다.
'🌍 Unity > Unity ETC Develop' 카테고리의 다른 글
유니티 인앱결제 IAP 소모성, 비소모성 (0) | 2020.10.22 |
---|---|
NavMesh Agent의 회전값이 너무 느릴 때 ( Unity NavMeshAgent Angular speed ) (0) | 2019.09.24 |
유니티 앱 설치에 실패했습니다 Unity App install fail (0) | 2019.04.07 |
Streaming 폴더에서 스프라이트 불러와서 사용하기 (Application.streamingAssetsPath) (0) | 2018.04.23 |
유니티 라이트맵을 구워도 그림자가 안구워질 때. (0) | 2018.04.23 |