Below are descriptions of some types of Blueprint corruption I’ve encountered, with possible solutions to them.
Blueprints spawning at weird offset
I saw this issue occur at least when migrating from UE 5.2 to 5.3.
I spawned a specific actor, and it would always appear at an offset. This seemed to be caused by some kind of corruption of the blueprint itself - I was able to fix it with the following steps:
- Open the BP
- Add a new Scene Component into the blueprint
- Make the Scene Component the root component of the actor
- Compile/Save
- Make the previous root component again the root component
- Remove the Scene Component you added earlier
- Compile/Save
Delegates or other values stored in the blueprint incorrectly
Sometimes weird data gets stored into the blueprint class. It’s possible to remove at least some of this by directly modifying the relevant object’s CDO.
For example using the code below you can remove errant delegates from a CDO. Once you run this code you need to Save the affected blueprint. If any instances of it exist in the level, you may need to replace them.
void UTapeGameCheatManager::TestBpFix(FString ClassName)
{
const UClass* Class = LoadClass<UObject>(this, *ClassName);
if(!Class)
{
UE_LOG(LogTemp, Log, TEXT("Failed to load class"));
return;
}
UObject* CDO = Class->GetDefaultObject();
if(!CDO)
{
UE_LOG(LogTemp, Warning, TEXT("Failed to get CDO"));
return;
}
ANPCCharacterBase* NPC = Cast<ANPCCharacterBase>(CDO);
if(!NPC)
{
UE_LOG(LogTemp, Log, TEXT("Cannot cast to NPC"));
return;
}
UE_LOG(LogTemp, Log, TEXT("Number of things: %d"), NPC->Speech->OnAudioFinished.GetAllObjects().Num());
NPC->Speech->OnAudioFinished.RemoveAll(NPC);
NPC->Modify();
}
Blueprint component corruption with empty details panel
Potentially fixable using https://github.com/Duroxxigar/ComponentPointerFixer