- Vrealmatic
- Unreal Engine Wiki
- Classes
- UBlueprintFunctionLibrary
UBlueprintFunctionLibrary class in Unreal Engine
A base class for any function libraries exposed to blueprints. It is also useful for working with data, files and other properties right in the Editor mode.

UBlueprintFunctionLibrary is a very usefull Class when there's a need to e.g. work with data and files right in editor (for their preparation and simpliefied development), without need to switch to runtime.
Creating assets with C++ & UBlueprintFunctionLibrary
#include "Kismet/BlueprintFunctionLibrary.h" // Engine
UCLASS()
class UExampleClass : public <mark>UBlueprintFunctionLibrary</mark>
{
GENERATED_BODY()
public:
/**
* Editor Only - Will not work in packaged build.
*
* Create an asset.
*
* @param AssetPath The path of where to create the asset: "/Game/Folder/MyAsset"
* @param AssetClass The class of the asset to create
* @param AssetFactory Optional. The factory to use to create the asset
* @param bOutSuccess If the action was a success or not
* @param OutInfoMsg More information about the action's result
*
* @return The created asset
*/
UFUNCTION(BlueprintCallable, Category = " ... ")
<strong>static UObject* CreateAsset(FString AssetPath, UClass* AssetClass, class UFactory* AssetFactory, bool& bOutSuccess, FString& OutInfoMsg);</strong>
}
.cpp file - CreateAsset function
#include "AssetToolsModule.h" // <mark>AssetTools (Editor Only)*</mark>
UObject* UExampleClass::CreateAsset(FString AssetPath, UClass* AssetClass, UFactory* AssetFactory, bool& bOutSuccess, FString& OutInfoMsg)
{
// Get the asset tools module
IAssetTools& AssetTools = FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools").Get();
// Find right factory
UFactory* Factory = AssetFactory;
if (Factory == nullptr)
{
for (UFactory* Fac : AssetTools.GetNewAssetFactories())
{
if (Fac->SupportedClass == AssetClass)
{
Factory = Fac;
break;
}
}
if (Factory == nullptr)
{
bOutSuccess = false;
OutInfoMsg = FString::Printf(TEXT("Create Asset Failed - Was not able to find factory for AssetClass. '%s'"), *AssetPath);
return nullptr;
}
}
// Can factory create the desired asset?
if (Factory->SupportedClass != AssetClass)
{
bOutSuccess = false;
OutInfoMsg = FString::Printf(TEXT("Create Asset Failed - Factory cannot create desired AssetClass. '%s'"), *AssetPath);
return nullptr;
}
<mark>// Create asset
UObject* Asset = AssetTools.CreateAsset(FPaths::GetBaseFilename(AssetPath), FPaths::GetPath(AssetPath), AssetClass, Factory);</mark>
// Make sure it worked
if (Asset == nullptr)
{
bOutSuccess = false;
OutInfoMsg = FString::Printf(TEXT("Create Asset Failed - Either the path is invalid or the asset already exists. '%s'"), *AssetPath);
return nullptr;
}
// Return the asset
bOutSuccess = true;
OutInfoMsg = FString::Printf(TEXT("Create Asset Succeeded - '%s'"), *AssetPath);
<strong>return Asset;</strong>
}* As of AssetToolsModule.h is AssetTools type of dependency, that is not attached to the project by default, it must be added to .Build.cs file manually.
PrivateDependencyModuleNames.AddRange
(
new string[]
{
// Default Modules
"Core",
"CoreUObject",
"Engine",
// New Modules - Editor Only
<mark>"AssetTools"</mark>,
}
);Creating various kind of assets
World asset
#include "Engine/World.h" // Engine #include "Factories/WorldFactory.h" // <strong>"UnrealEd" (Editor Only) - dependency must be added to .Build.cs file</strong> /** * Editor Only - Will not work in packaged build. * * <mark>Create a World asset.</mark> * * @param AssetPath The path of where to create the asset: "/Game/Folder/MyAsset" * @param bOutSuccess If the action was a success or not * @param OutInfoMsg More information about the action's result * * @return The created asset */ UWorld* UExampleClass::<strong>CreateWorldAsset(FString AssetPath, bool& bOutSuccess, FString& OutInfoMsg)</strong> { // Factory UWorldFactory* Factory = NewObject<<a href="https://docs.unrealengine.com/5.2/en-US/API/Editor/UnrealEd/Factories/UWorldFactory/" target="_blank">UWorldFactory</a>>(); Factory->bInformEngineOfWorld = false; Factory->bCreateWorldPartition = false; Factory->FeatureLevel = ERHIFeatureLevel::ES3_1; // Create and return asset UObject* Asset = <a href="#create-asset">CreateAsset</a>(AssetPath, UWorld::StaticClass(), Factory, bOutSuccess, OutInfoMsg); return Cast<UWorld>(Asset); }Material asset
#include "Materials/Material.h" // Engine #include "Factories/MaterialFactoryNew.h" //<strong>"UnrealEd" (Editor Only) - dependency must be added to .Build.cs file</strong> /** * Editor Only - Will not work in packaged build. * * <mark>Create a Material asset.</mark> * * @param AssetPath The path of where to create the asset: "/Game/Folder/MyAsset" * @param bOutSuccess If the action was a success or not * @param OutInfoMsg More information about the action's result * * @return The created asset */ UMaterial* UExampleClass::<strong>CreateMaterialAsset(FString AssetPath, bool& bOutSuccess, FString& OutInfoMsg)</strong> { // Factory UMaterialFactoryNew* Factory = NewObject<<a href="https://docs.unrealengine.com/5.2/en-US/API/Editor/UnrealEd/Factories/UMaterialFactoryNew/" target="_blank">UMaterialFactoryNew</a>>(); Factory->InitialTexture = nullptr; // Create and return asset UObject* Asset = <a href="#create-asset">CreateAsset</a>(AssetPath, UMaterial::StaticClass(), Factory, bOutSuccess, OutInfoMsg); return Cast<UMaterial>(Asset); }LevelSequence asset
#include "LevelSequence.h" // <strong>"LevelSequence" - dependency must be added to .Build.cs file</strong> /** * Editor Only - Will not work in packaged build. * * <mark>Create a LevelSequence asset.</mark> * * @param AssetPath The path of where to create the asset: "/Game/Folder/MyAsset" * @param bOutSuccess If the action was a success or not * @param OutInfoMsg More information about the action's result * * @return The created asset */ ULevelSequence* UExampleClass::<strong>CreateLevelSequenceAsset(FString AssetPath, bool& bOutSuccess, FString& OutInfoMsg)</strong> { UObject* Asset = <a href="#create-asset">CreateAsset</a>(AssetPath, ULevelSequence::StaticClass(), nullptr, bOutSuccess, OutInfoMsg); return Cast<ULevelSequence>(Asset); }NiagaraSystem asset
#include "NiagaraSystem.h" // <strong>"Niagara" - dependency must be added to .Build.cs file</strong> #include "BehaviorTree/BlackboardData.h" /** * Editor Only - Will not work in packaged build. * * <mark>Create a NiagaraSystem asset.</mark> * * @param AssetPath The path of where to create the asset: "/Game/Folder/MyAsset" * @param bOutSuccess If the action was a success or not * @param OutInfoMsg More information about the action's result * * @return The created asset */ UNiagaraSystem* UExampleClass::<strong>CreateNiagaraSystemAsset(FString AssetPath, bool& bOutSuccess, FString& OutInfoMsg)</strong> { UObject* Asset = <a href="#create-asset">CreateAsset</a>(AssetPath, UBlackboardData::StaticClass(), nullptr, bOutSuccess, OutInfoMsg); return Cast<UNiagaraSystem>(Asset); }SoundCue asset
#include "Sound/SoundCue.h" // Engine /** * Editor Only - Will not work in packaged build. * * <mark>Create a SoundCue asset.</mark> * * @param AssetPath The path of where to create the asset: "/Game/Folder/MyAsset" * @param bOutSuccess If the action was a success or not * @param OutInfoMsg More information about the action's result * * @return The created asset */ USoundCue* UExampleClass::<strong>CreateSoundCueAsset(FString AssetPath, bool& bOutSuccess, FString& OutInfoMsg)</strong> { UObject* Asset = <a href="#create-asset">CreateAsset</a>(AssetPath, USoundCue::StaticClass(), nullptr, bOutSuccess, OutInfoMsg); return Cast<USoundCue>(Asset); }Enum asset
#include "Engine/UserDefinedEnum.h" // Engine /** * Editor Only - Will not work in packaged build. * * <mark>Create a Enum asset.</mark> * * @param AssetPath The path of where to create the asset: "/Game/Folder/MyAsset" * @param bOutSuccess If the action was a success or not * @param OutInfoMsg More information about the action's result * * @return The created asset */ UUserDefinedEnum* UExampleClass::<strong>CreateEnumAsset(FString AssetPath, bool& bOutSuccess, FString& OutInfoMsg)</strong> { UObject* Asset = <a href="#create-asset">CreateAsset</a>(AssetPath, UUserDefinedEnum::StaticClass(), nullptr, bOutSuccess, OutInfoMsg); return Cast<UUserDefinedEnum>(Asset); }Struct asset
#include "Engine/UserDefinedStruct.h" // Engine /** * Editor Only - Will not work in packaged build. * * <mark>Create a Struct asset.</mark> * * @param AssetPath The path of where to create the asset: "/Game/Folder/MyAsset" * @param bOutSuccess If the action was a success or not * @param OutInfoMsg More information about the action's result * * @return The created asset */ UUserDefinedStruct* UExampleClass::<strong>CreateStructAsset(FString AssetPath, bool& bOutSuccess, FString& OutInfoMsg)</strong> { UObject* Asset = <a href="#create-asset">CreateAsset</a>(AssetPath, UUserDefinedStruct::StaticClass(), nullptr, bOutSuccess, OutInfoMsg); return Cast<UUserDefinedStruct>(Asset); }
- Importing Data
- Data Tables
- Importing meshes


