Managing instances of non-actor classes in the editor?

I’m trying to make an objective/quest tracking system in UE5 for a game I’m working on. I just started learning Unreal Engine a few weeks ago, so apologies if this should be obvious.

The core of the system is written in C++ and so far consists of an ACObjectiveController (extends UActorComponent) and a UObjective (extends UObject). The objective controller maintains the list of objectives, checks their status, etc…

To create objectives in the game, the UObjective class is extended in blueprint with the actual logic that defines how the objective works. I have a folder in the content browser for the various objective classes. This system MOSTLY works great.

The issue is that, these are still just classes, not instances. For each of these classes, I need to:

  • Instantiate the class
  • Set instance parameters with appropriate references to actual object instances
  • Add the class instance to the ObjectiveController.

I need some way to manage instances of my objective classes in the editor.

Actor objects, for example, can simply be added to the scene tree, UE will automatically instantiate them, and their instance parameters can be edited easily there. But for a UObject, I haven’t found any way I can setup an instance with the edtior short of doing it in code.

Any ideas for a good solution to this?

What I’ve thought of so far is:

  • Make the objectives inhert from the Actor base class instead and add them to the scene tree. That seems stupid, but would technically work and provide the functionality in the editor I want.
  • Implement additional functionality in the editor to manage my objective instances. This would be clean, but takes extra work.
  • Manually instantiate each objective class in a blueprint script or C++. That would be so messy.

Is there a good way in UnrealEditor to do this cleanly?