Hey guys, I made a cool UI window creation tool which will probably speed up the process of making games (or experiences or charts). It’s very modular so you can easily add your own features (called plugins inside it) to it. You can also set custom themes to customize it even more! It works for both ScreenGuis and SurfaceGuis, so you can do cool stuff, for example using it as a display screen in workspace or just keeping menus organized. A fun quirk is its ability to contain itself, and by that I meant both not exploding like the old version and containing a window inside of a window. The chances of me adding support for BillboardGuis are near zero. It’s also highly chainable so you can chain function calls. Here’s a list of features it can do:
-
Creating UI windows
-
Themes
You can use the prebuilt themes or make your custom themes to fit your game
-
Plugins (additional features)
-
BaseWindow:
The window’s base plugin which usually handles animations (you can disable this if you want to)
-
Header:
Handles things that headers should do, including dragging the window, closing the window, and hosting additional buttons which holds custom actions
-
Resize:
Handles resizing the window
-
Adapt:
Handles environmental changes, such as container size, position bounds, etc.
-
FrostedGlass:
Adds a frosted glass effect to the window’s background
-
-
Being able to put windows inside of a window
-
Being able to be put inside of a SurfaceGui
-
Lots of other internal features
It would take a long time to write all of the internal features, like adding custom header buttons, binding events, creating events, custom mouse position, manually loading plugins from other containers, etc.
Here’s a demonstration of most of the features combined:
You can get the module here, and you can test it in the test place
Here are some examples of how to use this module:
- Using
:create()
to quickly create a window:
local window = Windows:create(shopGui, UDim2.new(0.45,0,0.5,0), "Frutiger Aero")
- Using
.new
to construct a bare-bone window
local window = Windows.new(theme or nil):loadPlugin("BaseWindow"):loadPlugin("Header"):loadPlugin("Resize"):loadPlugin("FrostedGlass")
shopGui.Parent = window.instance
- Using the legacy version
Windows.settings.system.useLegacy = true
Windows:create(shopGui, UDim2.new(0.45,0,0.5,0)) --themes does not exist in the legacy version, but spaghetti does
I’ve put a bunch of comments everywhere inside of the module (including the prebuilt plugins) so it’s easier to understand what it does.
Version 21/10/2024 changes:
-Added full multi-touch support
-Fixed some edge-case partially-unresponsive SurfaceGui
-Removed unnecessary line breaks