2021
09.26

 

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. 빌드 / 에디터 플레이 테스트 시간이 줄어든다

앱에 포함될 컨텐츠가 별도의 파일로 빠지기 때문에, 매번 빌드할 때마다 이 파일들은 제외해서 빌드한다.  

 

또한 앞서 말했던 것과 같이 실행하지 않은 동작에 필요한 것들을 미리 로드하지 않기 때문에,

특정 기능만을 테스트한다면 해당 부분에 대한 에셋들만 로딩할 수 있어 로딩 시간이 줄어 든다.

 

 

 

COMMENT