MultiWinUI allows you to create native OS windows at runtime and display regular UUserWidgets inside them, fully independent of the main game viewport. Useful for tools, dashboards, editors, in-game UI overlays, or multi-monitor UI experiences.
- Spawn UUserWidgets in standalone, native OS windows
- Windows stay active independently of the main viewport
- Supports mouse/keyboard input just like any Slate window
- Simple Blueprint-accessible interface
Place the MultiWinUI folder into your project:
YourProject/
└─ Plugins/
└─ MultiWinUI/
Enable it in Edit > Plugins.
Restart the editor.
Blueprints:
Parameters:
WidgetClass— Type of UUserWidget to spawnPlayer— Reference to owning playerWindowConfig— Slate Window optionsOnWindowClosedDelegate— Event invoked when the new slate window is closed
Returns:
CreatedWidget— The widget instance created in the new window
#include "MultiWinUIBlueprintLibrary.h"
// Define a callback for the window close event
UFUNCTION()
void HandleWindowClosed(UUserWidget* ClosedWidget);
// ...
FSlateWindowConfig config;
config.SaneWindowPlacement = true;
config.ClientSize = FVector2D(400, 300);
config.Title = FText::FromString("Window");
FOnWindowClosedDelegate WindowClosedDelegate;
WindowClosedDelegate.BindUFunction(this, "HandleWindowClosed");
UUserWidget* Widget =
UMultiWinUIBlueprintLibrary::ConstructWidgetInNewWindow(
WidgetClass, GetOwningPlayer(), config, WindowClosedDelegate);
-
SlateWindowSubsystem (internal) Handles low-level window creation, destruction, and Slate integration. Hidden from Blueprints by design.
-
MultiWinUIBlueprintLibrary (public Blueprint API) Entry point for all Blueprint functions.
Mobile and console platforms do not support native windows.
- Native OS windows cannot render 3D scenes
- DPI scaling behavior may vary per OS
- Some platforms may restrict window parenting or always-on-top behavior
- Some slate window options may change redraw behavior during resizing events
Copyright (c) 2025 Brody Clark Licensed under the MIT License
Issues and pull requests are welcome! If you want to add new features, feel free to open a discussion.

