Skip to content

Multi-HUD at named anchors

When you want multiple independent React HUDs at separate screen positions, use the Add Web HUD Blueprint node. One node call equals one layer. Each layer is its own React app or route at its own URL.

The 9 anchors

text
 TopLeft       TopCenter      TopRight
 ┌──────┐     ┌──────┐      ┌──────┐
 │      │     │      │      │      │
 └──────┘     └──────┘      └──────┘
 MiddleLeft    Center       MiddleRight
 ┌──────┐     ┌──────┐      ┌──────┐
 │      │     │      │      │      │
 └──────┘     └──────┘      └──────┘
 BottomLeft   BottomCenter  BottomRight
 ┌──────┐     ┌──────┐      ┌──────┐
 │      │     │      │      │      │
 └──────┘     └──────┘      └──────┘

The node signature

ParamTypeDefaultNotes
NameFNamerequiredGlobally unique. Also becomes the BridgeName for Sender routing.
URLFStringrequiredComplete URL — plugin does not prepend Default Dev URL.
AnchorEWebHUDAnchorTopLeftOne of 9.
PaddingFVector2D(16, 16) pxInset from anchor edge (sign auto-flipped for right/bottom). Ignored for Center.
SizeFVector2D(0.3, 0.2)Viewport ratio per axis. >1 clamped to 1, <=0 rejected.

Typical Blueprint flow

text
Event BeginPlay
  ├─ Add Web HUD ("HpBar",   "http://localhost:5173/player-info", TopLeft,     (16,16), (0.25, 0.12))
  ├─ Add Web HUD ("Skills",  "http://localhost:5173/skills",      BottomCenter,(0,32),  (0.50, 0.18))
  └─ Add Web HUD ("Minimap", "http://localhost:5173/minimap",     TopRight,    (16,16), (0.18, 0.18))

Event On Inventory Pressed
  └─ Branch on Is Web HUD Active("Inventory")
        ├─ True  → Remove Web HUD By Name ("Inventory")
        └─ False → Add Web HUD ("Inventory", "http://localhost:5173/inventory", Center, (0,0), (0.6, 0.6))

Routing

The Sender component's TargetBridgeName matches the layer's Name (case-sensitive). Empty broadcasts to every layer.

text
ReactBridgeSender (component)
  TargetBridgeName: "HpBar"   ← only the HpBar layer receives PushFloat/PushMap calls

ReactBridgeSender (component)
  TargetBridgeName: ""        ← broadcast to HpBar, Skills, Minimap, Inventory, ...

Edge cases

SituationBehavior
AddWebHUD with same NameSame layer is reused: URL via LoadURL, anchor/padding/size updated, no full reload jitter
Name = NAME_NoneRejected, returns invalid handle, error log
URL = ""Rejected, returns invalid handle, error log
Size <= 0 either axisRejected, returns invalid handle, error log
Size > 1 either axisClamped to 1, warning log
Padding on CenterIgnored, verbose log
First call with no viewportReturns invalid handle. Call from BeginPlay or later

See Blueprint Library reference for the full node list.

Released under the MIT License.