신규 파일 생성 및 저장
FString assetName = "NewFile";
FString packageName = FString(TEXT("/Game/")) + assetName;
UPackage* package = CreatePackage(NULL, *packageName);
package->FullyLoad();
UDataAsset* newAsset = NewObject<UDataAsset>(package, *assetName, RF_Public | RF_Standalone | RF_MarkAsRootSet);
package->MarkPackageDirty();
FAssetRegistryModule::AssetCreated(newAsset);
FString packageFileName = FPackageName::LongPackageNameTofilename(packageName, FPackageName::GetAssetPackageExtension());
UPackage::SavePackage(package, newAsset, EObjectFlags::RF_Public | EObjectFlags::RF_Standalone, *packageFileName, GError, nullptr, true, true, SAVE_NoError);
TArray<UObject*> objectsToSync;
objectsToSync.Add(newAsset);
GEditor->SyncBrowserToObjects(objectsToSync);
수정한 기존 파일 저장
fileToSave->MarkPackageDirty();
UPackage* fileToSavePackage = Cast<UPackage>(fileToSave->GetOuter());
FString ExisitingFilename;
bool packageExists = FPackageName::DoesPackageExist(fileToSavePackage->GetName(), nullptr, &ExistingFilename);
if(packageExists)
{
bool isSaveSuccess = UPackage::SavePackage(fileToSavePackage, NULL, EObjectFlags::RF_Public | EObjectFlags::RF_Standalone, *ExisitingFilename, GError, nullptr, true, true, SAVE_KeepGUID);
if(!isSaveSucce)
{
UE_LOG(LogTemp, Error, TEXT("Saving failed."));
return;
}
}