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.

I need some oldschool stuff.

Hello World.

안녕 🙂

블로그 다시 써야지 써야지 했는데

하지만 이제와서 구닥다리 과거의 유물인 블로그라니! 싶기도 하고

그치만 꾸준히 해왔다면 어땠을까 싶기도 하고 ㅋㅋㅋㅋ

정신 여유 생기면 hyaline.com 을 여기다 연결해야지…