Feature Request: Editor for Class Default Object (CDO) Accessible via Content Browser
Context
Unreal Engine already exposes a tree-view of C++ classes in the Content Browser, which serves as a natural editorial entry point for class-level configuration. However, this view is currently passive: it does not allow developers or designers to assign or modify default values for EditDefaultsOnly
, Config
, or other class-level properties, nor does it provide visibility into the Class Default Object (CDO) associated with each class.
Proposal
Introduce a dedicated CDO Editor, accessible directly from the C++ Classes section in the Content Browser, enabling:
-
Visualization and editing of default values for C++ classes (via their CDO).
-
Serialization of these values in an editor-friendly location (e.g., metadata, config file, or invisible asset).
-
A simple interface similar to the existing
USTRUCT
editor. -
The ability to assign default assets (e.g.,
UInputMappingContext
,UInputAction
,UMaterialInterface
, etc.) without requiring Blueprint subclasses.
Benefits
-
Improves editorial clarity: designers can inspect and understand what a C++ class expects or provides without diving into code.
-
Reduces unnecessary Blueprint proliferation: many Blueprint subclasses exist solely to assign default assets, creating clutter.
-
Streamlines architectural design: developers can define meaningful defaults that are visible and editable.
-
Avoids hardcoded asset paths: everything remains editor-driven and safe.
-
Leverages an existing engine mechanism: the CDO is already deeply integrated into Unrealโs runtime and reflection systems.
Technical Considerations
-
CDOs are already instantiated and accessible via
GetDefault<UClass>()
. -
The editor could be a lightweight extension of the Details Panel, with serialization to
DefaultEngine.ini
, metadata, or a hidden asset. -
Could be limited to
EditDefaultsOnly
,Config
, andBlueprintReadOnly
properties.
Comparison with Unity
Unity introduced a similar feature for C# scripts, allowing default values to be assigned to UnityEngine.Object
fields directly on the script asset. While limited, it provides a clear and centralized configuration point. Unreal could offer a more powerful and deeply integrated version by leveraging its reflection system and CDO architecture.