RealDocs

AActor::PreSave

function Engine Since 4.0
#include "GameFramework/Actor.h"
Access: public Specifiers: virtualoverride

Description

Called on every UObject in a package just before it is serialized to disk or cooked. Override to perform per-object cleanup or data fixup that must happen before the object's state is captured.

Caveats & Gotchas

  • Always call Super::PreSave() — the base implementation on AActor handles streaming level transform adjustments and blueprint-related serialization prep.
  • This fires once per object in the package, unlike PreSaveRoot which fires once per package. Heavy per-object work can significantly slow down saves for levels with many actors.
  • Modifying other actors or assets from inside PreSave can cause non-deterministic save ordering bugs; confine changes to the actor itself.

Signature

ENGINE_API virtual void PreSave(FObjectPreSaveContext ObjectSaveContext) override;

Parameters

Name Type Description Default
ObjectSaveContext FObjectPreSaveContext Context describing the save operation type and target platform.

Return Type

void

Example

Rebuild derived data before save C++
void AMyActor::PreSave(FObjectPreSaveContext ObjectSaveContext)
{
	Super::PreSave(ObjectSaveContext);
	// Regenerate derived/cached data so the saved state is always fresh
	RebuildDerivedData();
}

Version History

Introduced in: 4.0

Version Status Notes
5.6 stable

Feedback

Was this helpful?

Suggest an edit

Select a field above to begin editing.