you can probably write specific functions in your player controller that control hud states. so function or custom event ‘show gameplay hud’ would always clear any existing widgets, and create the gameplay widget. or event ‘show artifact hud’ would always clear any existing widgets and create the artifact widget.
with this kind of control, you can just call these functions from where ever. so on overlap, call your created function ‘show artifact hud’ which executes the blueprint in the first image and ends up drawing the artifact hud. when the artifact widget is active, and you press your back button, you then cast your widget owner to your player controller, and call ‘show gameplay hud’.
with this method, you can control your hud states from a single location that you know will always have access to variables and stuff associated with your widgets.
btw, to clear all your widgets, Rama wrote a good tutorial about this, but if time is limited or you’re adverse to using C++, just store your widgets in a userWidget variable, and always set this variable to whatever your active hud widget is. that way you can just grab this variable and call ‘remove from parent’ whenever you need to’.