Can't Save Blueprint (Referenced in /Engine/transient)

Hello guys,

I experience problem with one of my blueprints. It fails to save with message:

…/BP_Rocket.uasset: Graph is linked to
object(s) in external map. External
Object(s): /Engine/Transient Try to
find the chain of references to that
object (may take some time)?

My setup is as follows. I have ARocket object defined in C++.

Rocket.h

#pragma once

#include "GameFramework/Actor.h"
#include "Rocket.generated.h"

UCLASS()
class MYPROJECT4_API ARocket : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	ARocket();

	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
	
	// Called every frame
	virtual void Tick( float DeltaSeconds ) override;	


	UFUNCTION(BlueprintNativeEvent, Category = "Default")
	void OnActorRocketHit(const FHitResult& hit_result);

private:

	void TraceForObstacle();

	void Trace(const FVector& trace_start, const FVector& trace_end);

	FVector m_LastPosition;
};

Rocket.cpp

// Fill out your copyright notice in the Description page of Project Settings.

#include "MyProject4.h"
#include "Rocket.h"
#include "MyProject4DamageTypes.h"

// Sets default values
ARocket::ARocket()
	: m_LastPosition(FVector::ZeroVector)
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

}

// Called when the game starts or when spawned
void ARocket::BeginPlay()
{
	Super::BeginPlay();
	
}

// Called every frame
void ARocket::Tick( float DeltaTime )
{
	TraceForObstacle();

	Super::Tick( DeltaTime );
}

void ARocket::TraceForObstacle()
{
	FVector current_position = GetActorLocation();

	if (m_LastPosition != FVector::ZeroVector)
		Trace(m_LastPosition, current_position);

	m_LastPosition = current_position;
}

void ARocket::Trace(const FVector& trace_start, const FVector& trace_end)
{
	// tracing logic ..
}

void ARocket::OnActorRocketHit_Implementation(const FHitResult& hit_result)
{
	Destroy();
}

In editor I’ve created blueprint that derives from ARocket and it is called BP_Rocket. Error occurs when i modify code of Rocket.h like follows:

  1. Open solution in VS
  2. Go to Rocket.h file
  3. Add any variable to the end of a class. Like “float myTestVariable;”
  4. Recompile
  5. Go to the editor and open BP_Rocket, try to save it
  6. Error occurs

I’ve uploaded my project so You can check it yourself. Project download.
Also this and this did not help me.

Cheers :wink:

Edit:

I just moved to 4.9 and this issue is still occuring ;/

Hello Guys,

this blueprint is really important to me. Any ideas?

Hi ,

Was this issue something that started occurring after converting the project from a previous version of the engine, 4.7 to 4.8 perhaps?

Noooope ;/ I really dont remember when In which engine version (4.7 or 4.8) i’ve created this blueprint, but I dont recall this happening after version change.

Hi ,

any new news about this one ? The way to repro this is very easy. Just download my project, open it in VS, add code as I have written above, compile and try to save blueprint.

Or maybe You already tried it and failed to reproduce ? I understand that this is pain because it is code project but please make shure to look into this bug.

cheers :wink:

Hello ,

Reproducing the issue isn’t a problem, but finding the cause is. I’ve been looking around and it seems this is a common problem that occurs when copying nodes/components/variables from other blueprints. Have you done anything of this sort? Also, be sure to be on the lookout for circular dependencies as that is also something that can cause this.

Have you tried upgrading your project to 4.9 as of yet to see if that could fix the issue?

In 4.9 this still occurs.

Yes I’ve done some copy - pasting. What are those circular dependencies?

P.S. If You can reproduce problem then You can pass it to apropriete developer for further investigation right?

Hello ,

A circular dependency would be when two classes/blueprints are referencing each other and are dependent on each other either directly or indirectly. An example would be if ClassA inherited from ClassB, but ClassB also inherited from ClassA, they would both rely on each other. It can be more indirect as well, such as A->B, B->C, C->A.

That said, I’ve placed a bug into our system for this issue and I’ll be sure to let you know of any updates to its status in the future. For your reference, the bug number is UE-21049.

Have a nice day!

Any news on this issue? This is occurring in 4.10, and is causing me a world of pain as it means I cannot move any of the erroring widgets or any widgets within erroring widgets.

Hello MugenCity,

Unfortunately this is still marked as a ‘To Do’ bug so it’s not currently in the progress of being worked on. In a more positive note, this means that it is not backlogged and should be fixed in a future update. If it does start being worked on or moved to the backlog for any reason, I’ll be sure to update here.