BP Nativization with WBP inherited: Unreal Engine seems to could not recognize inherited widget hierarchy from parent class

Summary

  • There is a parent WBP(Widget BluePrint class) with widget hierarchy that have NamedSlot.
  • There is a child WBP, inherited parent above.
  • In new WBP, you use child WBP as container of the other elements in widget hierarchy.
  • In this condition, if you package them with nativization, the elements under child WBP in widget hierarchy become invalid.
  • To avoid this, implement the appearance of WBP in the widget hierarchy of final child class.
Setting

In PIE

Packaged with Nativization (Inclusive)
ButtonA is null!

Download project files

You can download these project files from:
https://github.com/cutycutyhyaline/UE4NativizationSurvivalLog001

When you inherit WBP with widget hierarchy

Here is an WBP with NamedSlot. Let’s call this as WBP_Parent.

WBP_Parent

If you make new WBP by inheriting WBP_Parent, you can see like this.

WBP_Child_A_UsingWidgetHierarchyOfParent

In Hierarchy tab, there is nothing except name of new WBP.
But you can still see the elements of Parent in designr view at center of editor.

But, what if we add new stuffs in Hierarchy tab?

WBP_Child_B_WidgetHierarchyOverwrited
It has an warning message, but it works.

As you see, we got warning message in Compiler Results 😦

"This widget WBP_Child_B_WidgetHierarchyOverwrited and parent class widget WBP_Parent both have a widget hierarchy, which is not supported. Only one of them should have a widget tree."

“widget tree” in message means widget hierarchy. In precise, WidgetTree is inner class name of widget hierarchy.

OK. Anyway it works now, based on overwritied Widget Hierarchy.

Let’s see difference of these in more detail.

Settings to reproduce problem

Here is our main UI.

WBP_Hud
Widget Hierarchy in WBP_Hud

I placed WBP_Child_A_UsingWidgetHierarchyOfParent at upper line, with containing ButtonA
As like, I placed WBP_Child_B_WidgetHierarchyOverwrited at next line, with containing ButtonB.

I added some graph, to check each buttons are valid, and if they are null.
If they are valid, it change text of buttons, from “NotValidYet” to “YES! I AM VALID!”

Event Graph in WBP_Hud

We need to add this to game viewport.

BP_GameMode

In world setting, let’s change GameMode as BP_GameMode. Then, when we run in PIE, you can see this. Text of All buton changed to “YES! I AM VALID!”.

But, If we package this with nativization setting as Inclusive…

You can see this as you saw at summary.

WBP without compile warning message failed to show it’s child button as valid.
On the other hand, WBP got compile waring message, succeed to show it’s child as valid.

Conclusion

When WBP is nativized, unreal engine seems to could not recognize inherited widget hierarchy from parent class at completely.

If you want to avoid this, do not consist the appearance of WBP (Widget Hierarchy) in parent classes.

See also: BP – Nativizing a UMG widget hierarchy in which a child widget of another widget BP type has the “Is Variable” box unchecked will result in a crash at runtime. This was made me almost killed, too.

You can download these project files from:
https://github.com/cutycutyhyaline/UE4NativizationSurvivalLog001
I said twice because it’s important.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s