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.
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.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-55369 in the post.
7 |
Component | UE - Gameplay - Blueprint Compiler |
---|---|
Affects Versions | 4.18.3 |
Created | Feb 20, 2018 |
---|---|
Resolved | Aug 18, 2021 |
Updated | Aug 18, 2021 |