비동기 에셋 로딩을 배우다가 이해가 안가서 정리하게 되었다
- 내부적으로 FStreamableManager::RequestAsyncLoad 함수가 실행됨
- 이 함수는 로딩을 추적하기 위한 FStreamableHandle 타입의 핸들을 반환함.
- 옵션 (필요에 따라 사용) : FStreamableHandle.IsLoading() -> 로딩 중인지 확인
- 옵션 : 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 |
---|