UObject* USpriterImporterFactory::CreateNewAsset(UClass* AssetClass, const FString& TargetPath, const FString& DesiredName, EObjectFlags Flags) { FAssetToolsModule& AssetToolsModule = FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools"); // Create a unique package name and asset name for the frame const FString TentativePackagePath = PackageTools::SanitizePackageName(TargetPath + TEXT("/") + DesiredName); FString DefaultSuffix; FString AssetName; FString PackageName; AssetToolsModule.Get().CreateUniqueAssetName(TentativePackagePath, DefaultSuffix, /*out*/ PackageName, /*out*/ AssetName); // Create a package for the asset UObject* OuterForAsset = CreatePackage(nullptr, *PackageName); // Create a frame in the package UObject* NewAsset = NewObject<UObject>(OuterForAsset, AssetClass, *AssetName, Flags); FAssetRegistryModule::AssetCreated(NewAsset); NewAsset->Modify(); return NewAsset; }