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 existing Questions & Answers thread and let us know what's up.

5
Login to Vote

Won't Fix
CreatedOct 14, 2016
ResolvedAug 18, 2021
UpdatedAug 18, 2021