first i’d ask if you’re actually having performance problems because if not you could be over thinking it.
that said
this is what i do, if you use childwidgets or a widgetswitcher it wont turn into spaghetti, as all relevant code will still be inside its own widget, ie inventory/stats etc.
PC make sense to me but you could of course use the HUD class.
i guess its doable via the main HUD widget or HUD class but i dont think its worth it.
yeah this is only RemoveFromParent, you can force a GC but I dont think its worth it.
Really the only optimization i can suggest is ObjectPooling but it can be tricky since you’ll have to reset data/disable when inactive etc. ultimately i wouldnt worry unless profiling suggests a bottleneck.