Description

If a function inside a BlueprintFunctionLibrary class is declared as static, instances of the function node inside blueprints cause the blueprint to not save after a hot reload. This does not affect static functions in other classes that can still be saved.

From the ticket, the nodes are ending up pointing at the junk old CDO. It changes
DefaultObject="/Script/Outpost.Default__OutpostFunctionLibrary"
to
DefaultObject="/Engine/Transient.BPGC_ARCH_FOR_CDO_OutpostFunctionLibrary_21"

Steps to Reproduce
  1. Open UE4Editor (any project)
  2. Add code class to project based on BlueprintFunctionLibrary (MyFunctionLib)
  3. Add the follow code to the class
    • to the .h file:
      UFUNCTION(BlueprintCallable, Category = Test)
      	static float AThing();
      
    • to the .cpp file:
      float UMyFunctionLib::AThing()
      {
      	return 2.0f;
      }
      
  4. Compile the code
  5. Create new blueprint based on Actor (ActorBP)
  6. In Event Graph, add call to AThing and wire into BeginPlay node
  7. Compile/Save the blueprint - save is successful
  8. In VS, change the return value from 2.0f to 1.0f
  9. Compile the code with the editor open
  10. Save ActorBP

Result:
ActorBP is unable to save

Expected:
Blueprint saves successfully after hot reload.

Have Comments or More Details?

Head over to the existingAnswerHub thread and let us know what's up.

5
Login to Vote

Unresolved
ComponentCore - Hot Reload
Affects Versions4.13.1
CreatedOct 14, 2016
UpdatedNov 21, 2017