Recommendation
Use UPrimaryDataAsset when the Asset Manager must discover, identify, audit, load, unload, bundle, or chunk the asset directly. Use UDataAsset for ordinary referenced data.
Compare the options
Data Asset
Choose when
- Normal object references load the asset.
- A stable Primary Asset ID is not needed.
- Asset bundles and chunk rules are unnecessary.
Tradeoffs
- The setup is simple.
- The Asset Manager treats it as a secondary asset unless its class provides a valid Primary Asset ID.
- Blueprint
- Use a typed Data Asset object reference.
- C++
- Derive the definition class from UDataAsset.
Primary Data Asset
Choose when
- Content must be discovered by type.
- The asset loads on demand without a hard reference.
- Asset bundles, auditing, DLC, or install chunks matter.
Tradeoffs
- The project needs Asset Manager configuration.
- Asset types, IDs, and bundle rules need consistent ownership.
- Blueprint
- Use Asset Manager nodes such as Load Primary Asset and Get Primary Asset Object.
- C++
- Use UPrimaryDataAsset, FPrimaryAssetId, and UAssetManager.
Requirements
Both classes are built into the Engine. Primary assets also need Asset Manager scan rules and a stable asset type and ID scheme.
Example
Use UDataAsset for a small difficulty settings asset that is always loaded. Use UPrimaryDataAsset for an item catalog loaded by item ID and divided into install chunks.