Unfortunately not. Latent nodes suspend Blueprint execution, so the debugger usually won’t keep stepping node after a Delay. What you can do is to put another break point after the Delay, or add temporary Print Strings around the delayed section to see the execution order.
For your second question about UMG referencing and communication (chaining), yes, there are multiple ways to do it.
For BP:
1- You can always get the parent owning widget, and if you know the parent you can always cast to it. It’s “OK” to hard-reference like that. You can always walk up or down in UMG if you know the hierarchy. You can also use GetOuter().
2- C++: I know you are not into it, but this can be automated. It can be a subsystem, custom inherited user widgets that have an instigator, or even a struct that refers to player, HUD, owner, etc. by default. You can also do this manually in BP. For example, when creating a widget, always provide information about the instigator widget/object.
EX: You have an on-screen quest marker attached to an actor.
HUD (Parent) → IndicatorContainer (Parent) → Indicator (Quest)
IndicatorContainer → SpawnIndicator(Quest, ThisActor)
IndicatorContainer can now forget about the child. The child should do its own job.
The quest indicator checks range, has its own functions, moves around, displays, blinks, and when conditions are not met it goes away. Parent doesn’t care about the child, child doesn’t care about the parent. As you mentioned this can become a frustrating job if too much nested/chained hierarchy you have.
3- Event-driven design. This is generally what I use. It’s clean and extendable to huge systems. Parent listens to events, child broadcasts. Child never knows what the parent is, child always does the given job.
EX: You have a horizontal menu. The menu has N number of buttons. Parent creates buttons and binds to their clicked events. Buttons only dispatch:
OnClicked(Object)
Parent knows what was clicked.
4- Shared References (advanced): You load this on a controller or somewhere else and keep references in a shared place. You know which menus are created and can access them from the root.
Subsystems in C++ are very nice for this. You can have layers of information, track which layer holds which widgets, what is shown or hidden, and access them anywhere at any time.
5- MVVM: Also valid, especially if your UI is more data/state driven. Instead of widgets directly talking to each other, widgets bind to a ViewModel. The ViewModel holds the state, and widgets just read/update that state.
This is clean for things like inventory, stats, quest logs, settings menus, etc. because multiple widgets can react to the same data without needing direct references to each other.
However, I wouldn’t force MVVM for every small widget interaction. For simple child-to-parent communication, event dispatchers are still faster and simpler and nicer.