资产保存
简介
自定义资产的自动保存
在保存前回把只读文件的只读状态取消,针对Perforce设计,防止资产因不能写入而崩溃
实现
UFUNCTION(BlueprintCallable)
static bool SaveLoadedAsset(UObject* AssetObject, FString AssetPath);
bool UMyBlueprintFunctionLibrary::SaveLoadedAsset(UObject* AssetObject, FString AssetPath)
{
if(!AssetObject || AssetPath.IsEmpty())return false;
UPackage* Package = AssetObject->GetPackage();
if(!Package)
{
Package = CreatePackage(*AssetPath);
}
if(Package)
{
Package->FullyLoad();
Package->SetDirtyFlag(true);
FAssetRegistryModule::AssetCreated(AssetObject);
const FString PackageFileName = FPackageName::LongPackageNameToFilename(Package->GetPathName(), FPackageName::GetAssetPackageExtension());
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
PlatformFile.SetReadOnly(*PackageFileName, false);
FSavePackageArgs SavePackageArgs;
return UPackage::SavePackage(Package, AssetObject, *PackageFileName, SavePackageArgs);
}
return false;
}