// Fill out your copyright notice in the Description page of Project Settings.usingUnrealBuildTool;publicclassMyProjectEditor:ModuleRules{
publicMyProjectEditor(ReadOnlyTargetRules Target):base(Target){
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(newstring[]{
"Core","CoreUObject","Engine","InputCore","MyProject"});
PrivateDependencyModuleNames.AddRange(newstring[]{
"AssetRegistry","UnrealEd","GameProjectGeneration","ContentBrowser",});// Uncomment if you are using Slate UI// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });// Uncomment if you are using online features// PrivateDependencyModuleNames.Add("OnlineSubsystem");// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true}}
template<classNewObjC= UObject>
NewObjC*DoTaskGenerate(const FString& BPName, UPackage* Package, IAssetRegistry& AssetRegistry){
UBlueprint* NewBP =FKismetEditorUtilities::CreateBlueprint(const_cast<UClass*>(NewObjC::StaticClass()),
Package,FName(*BPName), BPTYPE_Normal,UBlueprint::StaticClass(),UBlueprintGeneratedClass::StaticClass());if(NewBP ==nullptr)returnnullptr;
NewObjC* TaskObj =Cast<NewObjC>(NewBP->GeneratedClass->GetDefaultObject());//////set bp default value///// Notify the asset registryFAssetRegistryModule::AssetCreated(NewBP);// Mark the package dirty...
Package->MarkPackageDirty();// Sync the content browser to the new asset
TArray<UObject*> SyncAssets;
SyncAssets.Add(NewBP);
FContentBrowserModule& ContentBrowserModule = FModuleManager::LoadModuleChecked<FContentBrowserModule>("ContentBrowser");
ContentBrowserModule.Get().SyncBrowserToAssets(SyncAssets);return TaskObj;}