ue4编辑器下程序化导入音频SoundWave
导入音频并保存为蓝图资产,返回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;
}

