PrimaryDataAsset Blueprint Object Reference lost after Editor restart

Hey,

I worked on a Dialogue-System prototype and the DataAssets seemed to come in handy. But now I have a problem with this. I’m using UE 4.20.2 and I’m working in a blueprint project.

What I did:

  1. Created a new Blueprint Class derived from PrimaryDataAsset (BP_Conv)
  2. Openend it up and added some variables, nothing fancy here, only some Name-Variables. Save & Compile
  3. Created a new DataAsset (Rightclick - Miscellanous - DataAsset)
  4. Picked the derived Blueprint Class as the asset’s class (BP_Conv)
  5. Created a new Blueprint Class derived from Actor (BP_DialogueTest)
  6. Added a new Variable of the type BP_Conv and made it public
  7. Hit Compile & Save.
  8. Dragged an Instance of BP_DialogueTest into the Scene
  9. Assigned a reference of the previously created DataAsset to the Instance.
  10. Run the game, everything worked fine.
  11. Restarted the Editor
  12. The DataAsset isn’t referenced by the instance of BP_DialogueTest anymore.

I can reproduce this with my current project and with a fresh one. Is there any limitiation I missed or is this a bug?
I really appreciate any help on this matter.

Thanks in Advance and best regards!
Dekurian

Nevermind.
Just found the solution to the problem after getting some sleep.

I flagged the derived class BP_Conv as abstract in the Class Settings, because originally I intended BP_Conv to be a base class for different kinds of conversations.

For testing purposes I created a DataAsset from the base class BP_Conv. Oddly enough this was no problem for the engine, which shouldn’t be possible.

However referencing the instance of the DataAsset which was created from an abstract class lead to the problem I had. I simply removed the abstract flag, now everything works as intended.

Consider this post closed, but if you don’t mind please consider having a look at the DataAsset Instancing behavior. An abstract class should not be able to be instanced like this.

Thanks in advance and have a good one