Description

Blueprints using renamed variable do not indicate that they need to be recompiled. (However errors are shown on play)

It is possible to not see an error if you add a variable with the same name as the variable you just changed.

Steps to Reproduce

User Reported Issue:
Sample Project Attached

A. With Output Log errors:
1 Create blank blueprint project;
2 In content browser create Actor blueprint class, named "BP_B";
3 Add to BP_B integer variable, named "var", and PrintString this variable in EventTick;
4 In content browser create Actor blueprint class, named BP_A;
5 Add to BP_A BP_B variable, named "B", in EventBeginPlay add SpawnActor BP_B and save ReturnValue to this variable;
6 In BP_A in EventTick increment B.var (Get, +, Set);
7 Run PIE, watch on screen how the variable B.var increases;
8 Rename BP_B variable "var" to "old";
9 Watch that the BP_B marked as Unsaved and Dirty, but BP_A only marked as Unsaved, not Dirty;
10 In BP_A graph Get and Set nodes changed to "old";
11 Run PIE, watch that the variable B.old does not change;
12 Watch error in Output Log:
"PIE: Error: Blueprint Runtime Error: Attempted to access missing property 'None'. If this is a packaged/cooked build, are you attempting to use an editor-only property? from function: 'ExecuteUbergraph_BP_A' from node: Set var in graph: EventGraph in object: BP_A with description: Attempted to access missing property 'None'. If this is a packaged/cooked build, are you attempting to use an editor-only property?"
"PIE: Error: Blueprint Runtime Error: Attempted to assign to None from function: 'ExecuteUbergraph_BP_A' from node: Set var in graph: EventGraph in object: BP_A with description: Attempted to assign to None".

B. Without Output Log errors (step 8* added):
1 Create blank blueprint project;
2 In content browser create Actor blueprint class, named "BP_B";
3 Add to BP_B integer variable, named "var", and PrintString this variable in EventTick;
4 In content browser create Actor blueprint class, named BP_A;
5 Add to BP_A BP_B variable, named "B", in EventBeginPlay add SpawnActor BP_B and save ReturnValue to this variable;
6 In BP_A in EventTick increment B.var (Get, +, Set);
7 Run PIE, watch on screen how the variable B.var increases;
8 Rename BP_B variable "var" to "old";
8* Add to BP_B integer variable, named "var";
9 Watch that the BP_B marked as Unsaved and Dirty, but BP_A only marked as Unsaved, not Dirty;
10 In BP_A graph Get and Set nodes changed to "old";
11 Run PIE, watch that the variable B.old does not change;
12 No any error in Output Log. The variable "var" (step 8*) changes.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-55369 in the post.

7
Login to Vote

Won't Fix
CreatedFeb 20, 2018
ResolvedAug 18, 2021
UpdatedAug 18, 2021