欢迎光临散文网 会员登陆 & 注册

ue4编辑器下程序化导入音频SoundWave

2023-07-11 18:19 作者:疯子阿狮  | 我要投稿

导入音频并保存为蓝图资产,返回SoundSave软对象
bool SaveCubeWaveSound(const FString& AssetPath, const FString& ObjectName, const FString& SoundFilePath, TSoftObjectPtr<USoundWave>& WaveSoundObj)
{
   FAssetToolsModule& AssetToolsModule = FModuleManager::Get().LoadModuleChecked<FAssetToolsModule>("AssetTools");

   USoundFactory* FbxFactory = NewObject<USoundFactory>(USoundFactory::StaticClass());
   FbxFactory->AddToRoot();
   
   UAssetImportTask* Task = NewObject<UAssetImportTask>();
   Task->AddToRoot();
   Task->bAutomated = true;
   Task->bReplaceExisting = true;
   Task->DestinationPath = AssetPath;
   Task->bSave = true;
   Task->Filename = SoundFilePath;
   Task->Factory = FbxFactory;
   FbxFactory->SetAssetImportTask(Task);
   TArray<UAssetImportTask*> Tasks;
   Tasks.Add(Task);
   AssetToolsModule.Get().ImportAssetTasks(Tasks);

   TArray<UObject*> SoundObjList = Task->GetObjects();
   
   if (SoundObjList.Num()>0)
   {
      FSoftObjectPath SolftObjPath = FSoftObjectPath(SoundObjList[0]);
      WaveSoundObj = TSoftObjectPtr<USoundWave>(SolftObjPath);
     
      TArray<UPackage*> PackagesToSave;
      PackagesToSave.Reset(SoundObjList.Num());
     
      PackagesToSave.AddUnique(SoundObjList[0]->GetOutermost());
     
      UEditorLoadingAndSavingUtils::SavePackages(PackagesToSave, false);

      Task->RemoveFromRoot();
      FbxFactory->RemoveFromRoot();
      return true;
   }
   return false;
}


ue4编辑器下程序化导入音频SoundWave的评论 (共 条)

分享到微博请遵守国家法律