UE4-【C++】【UE4异步加载】

心已赠人 2023-06-17 13:55 34阅读 0赞
  1. FString sound_path = data.Sound;
  2. FSoftObjectPath path;
  3. path.SetPath(sound_path);
  4. TSoftObjectPtr<USoundCue> sound;
  5. if (path.IsValid())
  6. sound = Cast<USoundCue>(path.ResolveObject());
  7. TArray<FSoftObjectPath> Assets;
  8. Assets.AddUnique(path);
  9. ACharacter* host = UFLCharacterHelp::GetHostCharacter(GetWorld());
  10. URAsyncLoader::GetInstancePtr()->LoadAsyncResource(Assets, FStreamableDelegate::CreateLambda([=] {
  11. UGameplayStatics::PlaySoundAtLocation(host, sound.Get(), host->GetCapsuleComponent()->GetComponentLocation());
  12. }));
  13. void URAsyncLoader::LoadAsyncResource(TArray<FSoftObjectPath> Assets, FStreamableDelegate Callback)
  14. {
  15. TArray<FSoftObjectPath> AsyncAsset;
  16. AsyncAsset.Reset(Assets.Num());
  17. for (FSoftObjectPath& objectPath : Assets)
  18. {
  19. if (!mAssets.Contains(objectPath) && !objectPath.IsNull() && !objectPath.IsSubobject())
  20. {
  21. AsyncAsset.AddUnique(objectPath);
  22. mAssets.AddUnique(objectPath);
  23. }
  24. }
  25. if (AsyncAsset.Num() > 0)
  26. {
  27. GetInstancePtr()->_StreamableManager.RequestAsyncLoad(AsyncAsset, Callback);
  28. }
  29. else
  30. {
  31. Callback.ExecuteIfBound();
  32. }
  33. }

发表评论

表情:
评论列表 (有 0 条评论,34人围观)

还没有评论,来说两句吧...

相关阅读