UI Marker System & Widget Pooling
Visual feedback is a core part of any interaction system — and Ultimate Interaction Manager comes with a fully dynamic marker UI built for both performance and clarity.
This system uses widget pooling to ensure consistent performance even when multiple interactables are present, and it includes customization for on-screen, off-screen, and animated UI elements.
Let’s break down how it works and how to customize it to your needs.
How the Marker System Works
Each interaction target is automatically assigned a UI marker widget when it enters range. These markers:
- Attach to the target or a named component (Marker Component Name)
- Update in real time with progress, direction, and state
- React visually based on the interaction’s type or current status
- Can display icons, progress bars, directional indicators, and key prompts
- Are pooled — meaning they are reused instead of recreated
You don’t need to manually add or remove markers — the system handles that for you.
Widget Pooling
Pooling is critical for performance — especially when dealing with dozens of interactables.
Here’s how it works:
- A number of marker widgets are instantiated at BeginPlay
- When a new target enters range, a widget is assigned from the pool
- If no widgets are available, a new one is created — then added to the pool
- When a target is removed or hidden, the widget is returned to the pool for future reuse
This reduces runtime overhead and avoids spikes from frequent widget creation.
Configuring Pooling Settings
To configure the pool, select your Manager_Interactor component and find these settings:
- Default Widget Pool Size
→ Number of markers created at BeginPlay - Pending Target Check Interval
→ How often the interactor checks for nearby interactables - Widget Screen Margin
→ Padding around the edge of the screen for off-screen markers - Screen Radius Percent
→ Defines how far off-screen indicators can move (circular boundary effect)
Tip: Start with a pool size slightly larger than your average number of active interactables.
Customizing Marker Appearance
Each marker can be fully styled using the Marker Settings on the interaction target:
- Progress bar style (circular with animated fill or static)
- Custom textures or materials
- Triangle indicator toggle
- Icon rotation toggle
- Flashing POI or Target states
- Foreground/background color control
- Texture2D or material slot override
Off-Screen Indicators
Off-screen targets are automatically handled by the system:
- They are moved to the screen edge
- The system calculates the angle and applies a circular boundary constraint
- You can control the shape and reach of this area using Screen Radius Percent
- POI or quest icons can be displayed even for targets far outside view
This allows for World of Warcraft-style POI indicators, directional markers, or stealth/patrol UIs.
Performance Tips
- Minimize per-frame logic in marker widgets (e.g. avoid Tick events)
- Don’t use more markers than necessary — leverage cooldowns or smart visibility rules
- Test on lower-end hardware if you expect high marker counts (e.g. strategy or open world)
What’s Next?
Your UI system is now fast, clean, and styled to match your project — and you’re ready to handle hundreds of interactables without worrying about performance.
In the final section, we’ll look at advanced interaction logic, including network behavior, custom interaction flows, and how to extend the system with your own input or gameplay rules.