Setting Blueprint Interface Variable in Instance

I have a set up a blueprint interface (called PCG_INode) with just one method: Generate. This method returns a struct that is used to generate static mesh instances in the construction script of another blueprint (called PCG_Instance). The PCG_Instance blueprint has an editable variable called RootNode of type PCG_INode. I have a few blueprints that implement the PCG_INode interface’s generate function. The idea was that I could drag a PCG_Instance into the editor, and then set its RootNode to an instance of PCG_INode through the details panel, and depending on which blueprint I select, it will generate different things.

The RootNode variable appears in the details panel, and looks a lot like it’s going to let me create an instance by selecting it in the content browser. However, its value is None and I am unable to select any of my PCG_INode implementors. I’ve included a screenshot below (open in new tab for full resolution):

Any ideas on how to proceed? Is what I’m trying to do even possible?

Sadly, interface references cannot be set from the UE4 editor. They are also not serialized and not network replicated, so it’s usually unsafe to expose them as an editable property on Blueprints anyway. I don’t know why it gives you that dummy text field – it’s confusing. It should just not let you even view it, in my opinion.

The easiest way to solve your problem would be to change the property type to an Actor or regular Object reference, and then cast to the interface when you need to use the members of the interface.

Edit: Apparently you can type in the name manually in that field and it will actually be serialized. Not very convenient, though.