AActor::PreSave
#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();
} See Also
Version History
Introduced in: 4.0
| Version | Status | Notes |
|---|---|---|
| 5.6 | stable | — |
Feedback
Was this helpful?