Reusable UI Components for Godot
Reusable, composition-first UI pieces for Godot — built to be combined with each other and with vanilla nodes.
Overview
Reusable UI Components is a collection of generic, framework-agnostic UI components and base classes for Godot 4, built around composition rather than inheritance-heavy customization.
Each component solves one focused problem and is designed to be dropped into any project and combined with the others and with vanilla Godot nodes.
Features
Reusable components
Plug-and-play nodes/scripts — attach them and configure their exported properties, no subclassing required.
IconValueDisplay— Displays an icon plus a numeric value, with support for custom string formatting (e.g. currency, counters).Node2DWrapper— Wraps aNode2D(and its children) so it can be used as aControl, e.g. insideContainers or as button visuals.ScaleWrapper— Lets a childControlscale itself freely without its parentContaineroverriding that scale.SlotWheel— A slot-machine-style wheel that scrolls through a looping list of items and spins to land on a chosen one, with pausable/resumable/serializable spin state.StatefulButton— A visual-less button (BaseButton) that tracks and exposes its interaction state (NORMAL,HOVER,PRESSED,DISABLED), useful for composing buttons whose visuals go beyond whatButtonsupports.TextureRepeater— Instantiates a configurable number of identicalTextureRectnodes, useful for grids/slots/tiled backgrounds.
Base classes / framework primitives
Intended to be subclassed to fit your own data and visuals; they provide the lifecycle/contract, not a finished look.
ListDisplay(@abstract) — Displays a dynamic list ofControlnodes bound to arbitrary data, with support for adding, updating, removing, sorting and batch-loading elements efficiently. Subclass it and implement its abstract methods.ToggleableDisplay— Base class for dismissable UI displays (dialogs, menus, popups) managed by external systems or local scene logic. Provides shared request signals, input hooks, and input-blocking behavior while remaining agnostic to how the display is actually shown/hidden or mounted/unmounted.
Demos
You can find demos for each component in the project repo.
Changelog for version v1.0.0
No changelog provided for this version.