Greetings, @KVogler! I believe I can help.
When you create a new Blueprint in the Content Browser, you are not creating an instance of an object; you are creating a new **class, **the same way you would if you were programming in C++. It’s a definition of an object that can exist in your game somewhere, not an object in and of itself.
When you create a new Data Table, you aren’t making a Blueprint class that extends from Data Tables, you are creating an **instance **of a Data Table that uses some structure as its table row, and appears as an asset that can be referenced in the content browser.
Thus, if we’ve got two classes called GameInstanceBP and ObjectBP, and we want to have a reference to an object of type ObjectBP inside of our GameInstanceBP, here’s the extra steps you can add to make this implementation make sense:
- Create a new variable called ObjectClass that has a type Class Reference instead of Object Reference. This makes it a variable that points to a class type rather than an instance of an object. Compile the Blueprint for the added variable to take effect.
- In the **Details **panel, you will see a dropdown for the Default Value. Click it and you can select ObjectBP or any class derived from ObjectBP.
- Make sure that the Default Value for ObjectClass is not set to None. Then, create a second variable called ObjectInstance, change its type to ObjectBP, but make this one an Object Reference. Your Variables panel will look like this:

4. Create an Init event inside of your GameInstanceBP’s Event Graph. Then, create a Construct Object from Class node, attach it to Init with the Execution Pin, and drag the ObjectClass variable into the graph with a Get node. Drag ObjectInstance into the graph with a Set node, and use the Return Value to set the value of ObjectInstance. Get a reference to Self and attach that to the Outer pin in order to make GameInstanceBP the owner of ObjectInstance.
When your Game Instance is created (provided that your game is set to use it in Project Settings), ObjectInstance will be filled with an instance of the class you provided in ObjectClass.
If you like, you can eschew the ObjectClass variable completely and just use the dropdown on the Construct Object from Class node to select what class you want to use.
One way or another, the Object Instance, once added, will stick around as long as your Game Instance does. The use of Construct Object is equivalent to using the **New **keyword in C++ to create a new instance of an object.
Hope that helps. 