DreamGUI

Overview

DreamGUI is a 3D UI plugin for Unreal Engine 5.8 — widgets are UObjects with a rect, a pivot and anchors in a tree, batched by a canvas, on the screen or standing in the level.

DreamGUI is a UI system for Unreal Engine 5.8. A widget here is a UObject with a rect, a pivot and anchors, arranged into a tree; a canvas (UDreamCanvas) batches the whole tree into as few draw calls as it can. That is Unity's uGUI shape rather than Slate's.

The shape buys three things UMG cannot do as directly:

  • UI in the world. A canvas can render in screen space or sit on a surface in the level, at any angle, lit or unlit, with correct hit testing either way.
  • A tree that is a class. A UI tree is authored in a widget Blueprint (UDreamWidgetBlueprint) and reused by subclassing and by nesting one widget class inside another tree — the way UMG's widget Blueprints work. The tree can also be written as text: a .dui file is the source of a widget Blueprint, and the designer writes its edits back into it.
  • Per-widget perspective. A widget can establish a perspective its subtree is foreshortened into, the way CSS perspective works.

It costs you Slate's ecosystem: none of UMG's widgets, styles or bindings apply. DreamGUI has a control library of its own whose names deliberately follow UMG's, and where a name could not be kept the reason is written down (see How it differs from UMG and from upstream).

Plugin version1.0.0, the first public release (the development builds before it were numbered 1.x, 2.0 and 2.1; see the changelog)
EngineUnreal Engine 5.8, a source build or an Epic launcher install
PlatformWin64 is the only platform built and run (see Platforms)
Runtime modulesDreamGUIRenderer, DreamGUI, DreamGUIInput, DreamGUIControls, DreamGUIExtensions, DreamGUISamples, DreamTween
Editor-side modulesDreamGUIEditor, DreamGUIK2Nodes (UncookedOnly), DreamGUITests (Editor)
Plugin dependencyEnhancedInput (the plugin enables it itself)
Source files.dui, under a project's or a plugin's DUI/ directory
Project settingsProject Settings ▸ Plugins ▸ Dream GUI and Project Settings ▸ Plugins ▸ DreamUI
LicenseMIT
OriginA fork of LGUI / LexUI by Lex Liu — not a drop-in replacement for it

At a glance

class /Game/UI/WBP_Hello

Widget Root {
    AnchorData.AnchorMin = (0, 0)
    AnchorData.AnchorMax = (1, 1)
    AnchorData.SizeDelta = (0, 0)
    + Overlay {}

    Text Greeting {
        AnchorData.SizeDelta = (600, 60)
        Text     = "Hello, DreamGUI"
        FontSize = 32
        HAlign   = Center
        @slot HorizontalAlignment = Center
        @slot VerticalAlignment   = Center
    }
}

Root is anchored to all four corners with no inset, so it fills whatever it is added to; + Overlay makes it stack its children; Greeting is a 600 × 60 text, and its two @slot lines are what it asks of the Overlay above it: centred both ways. Point a widget Blueprint's Source File at this file and compile, and it is a class you can add to the viewport or drag into a level — step by step in Your first screen.

Where to start

On this page