UI sin código, configurada por atributos.
PrettyUI es una librería UI ligera para Roblox que maneja hover, animaciones de apertura/cierre, feedback de sonido, stacking de GUIs con blur y grupos de selección, configurada completamente a través de atributos de instancia en Studio, sin scripting individual por botón.
Importante
PrettyUI está en una etapa experimental temprana. Se esperan bugs. Contribuir es tan fácil como abrir un issue o un pull request.
Características
- Configuración sin código: botones, sonidos y navegación se configuran íntegramente mediante atributos de instancia en Studio
- Registro automático: cualquier
ScreenGuicon el atributoPManagedGUI = truees detectado al cargar y también en tiempo de ejecución - Gestión de GUIs en stack: abrir un GUI lo apila; cerrarlo restaura el anterior, con un blur global suavizado
- PButton: animación de escala al hover, efecto de brillo en cursor, hooks de sonido y navegación entre GUIs por clic
- PSelectionGroup: grupos de botones con selección simple o múltiple e imágenes de selección animadas
- Módulos de eventos: adjunta
OnClicked,OnHover, etc. comoModuleScripts hijos directamente en el botón, sin handler central - Cleanup con Janitor: cada componente limpia sus propias conexiones y tweens de forma automática
Requisitos
PrettyUI depende de dos paquetes bajo ReplicatedStorage/Packages/:
| Paquete | Fuente |
|---|---|
| Promise | evaera/promise en Wally |
| Janitor | howmanysmall/janitor en Wally |
Instalación
- Copia la carpeta
PrettyenStarterPlayer/StarterPlayerScripts. - Asegúrate de que
JanitoryPromiseestén bajoReplicatedStorage/Packages/. - Llama a
:Init()y luego a:Start()desde tu bootstrap de cliente:
local Pretty = require(path.to.Pretty)
Pretty:Init()
Pretty:Start()
Pretty escanea PlayerGui al iniciar y observa nuevos ScreenGuis añadidos en tiempo de ejecución sin cableado adicional.
Estructura de GUI
Cada ScreenGui gestionado debe seguir esta jerarquía:
ScreenGui ← atributo: PManagedGUI = true
└── Canvas ← Frame (AnchorPoint 0.5, 0.5), animado al abrir/cerrar
└── Container ← Frame, aquí va el contenido real del UI
├── ImageButton ← se convierte en PButton automáticamente
├── ImageButton
└── CanvasGroup ← se convierte en PSelectionGroup (requiere PSelectionGroup = true)
├── ImageButton
└── ImageButton
Canvas se desliza entre (0.5, 0, 0.5, 0) (abierto) y (0.5, 0, 1.5, 0) (cerrado). El ScreenGui arranca deshabilitado, Pretty lo habilita tras resolver el toggle inicial.
Notas de diseño
La navegación entre GUIs, los grupos de selección y el comportamiento de cierre se configuran con atributos (POpensGUI, PClosesCurrentGUI, PAddsToStack, PSelectionGroup, etc.). La lógica de eventos vive en ModuleScripts hijos nombrados por evento (OnClicked, OnHover, OnSelect) manteniendo cada botón autocontenido y el código libre de handlers centrales.
Licenciada bajo la MIT License - Copyright (c) 2026 Mastedore.