본문 바로가기
언리얼엔진/파일 로딩 관련

[파일 로딩] 비동기 에셋 로딩 과정

by 예상밖의C 2024. 1. 25.

비동기 에셋 로딩을 배우다가 이해가 안가서 정리하게 되었다

  1. 내부적으로 FStreamableManager::RequestAsyncLoad 함수가 실행됨 
  2. 이 함수는 로딩을 추적하기 위한 FStreamableHandle 타입의 핸들을 반환함. 
  3.  옵션 (필요에 따라 사용)FStreamableHandle.IsLoading() -> 로딩 중인지 확인
  4.  옵션 : FStreamableHandle.WaitUntilComplete() : 에셋 로딩이 완료될 때까지 기다려달라고 하는 함수
void ASRPGCharacter::OnAssetLoaded()
{
    AssetStreamableHandle->ReleaseHandle();
    TSoftObjectPtr<USkeletalMesh> LoadedAsset(CurrentPlayerCharacterMeshPath);
    if (true == LoadedAsset.IsValid())
    {
        GetMesh()->SetSkeletalMesh(LoadedAsset.Get());
    }

}
  • 에셋 로딩이 되면 핸들은 필요없으므로 해제시켜서 메모리 누수 방지
  • 로딩된 에셋은 소프트 오브젝트 포인터에 저장
  • 소프트오브젝트 포인터가 있다면 이 클래스의 매쉬를 불러와서 붙여준다. 

장점: 게임 시작과 플레이에 꼭 필요한 요소가 아니라면 게임 로딩 시에 그 요소를 로딩하는데 시간 소요를 하는 것이 불필요하기 때문에 게임에서 그 리소스를 사용할 때만 로딩하도록 할 수 있어 최적화에 도움이 된다. 

'언리얼엔진 > 파일 로딩 관련' 카테고리의 다른 글

[파일 로딩] TSoftObjectPtr<Type>  (0) 2024.01.25