Sobre el proyecto
Bevy Lunex es un motor de diseño retenido construido para el framework Bevy ECS (Sistema de Componentes de Entidad) en Rust. Permite a los desarrolladores crear UIs personalizadas usando componentes y sistemas ECS estándar, en lugar de patrones GUI de modo inmediato.
Las capacidades clave incluyen:
- Modelo de diseño retenido: El diseño se calcula una vez y se almacena, reduciendo la sobrecarga de recálculo en comparación con los sistemas GUI de modo inmediato. Esto ofrece beneficios de rendimiento para UIs estáticas o actualizadas con poca frecuencia.
- Diseño de flujo tipo flexbox: El modelo UiLayout::flow() integrado soporta ajuste de contenido, relleno de espacio, tamaño relativo y ajuste de texto, inspirado en el sistema de diseño Clay.
- Soporte de relación de aspecto: El motor está diseñado para manejar todos los tamaños de ventana y relaciones de aspecto sin deformación, con tipos de diseño que reaccionan intuitivamente a los cambios de tamaño.
- UI 2D y 3D (espacio mundial): Aprovechando el componente Transform de Bevy, Lunex soporta tanto elementos UI planos 2D como espaciales 3D, permitiendo la integración de UI diegética en juegos.
- Estilo multiestado: Componentes como UiColor y UiLayout soportan la definición de diseños y colores para diferentes estados como base y hover, con velocidades de transición configurables.
- Interactividad nativa de ECS: Los eventos de hover, clic y puntero se manejan a través de observadores y sistemas, haciendo que el comportamiento de la UI sea completamente componible con el resto de una aplicación Bevy.
La biblioteca enfatiza un diseño de componente-por-funcionalidad, donde generar un elemento UI implica combinar componentes como UiLayout, UiHover, UiColor y componentes seleccionables/representables en el estilo ECS estándar de Bevy.
La documentación está disponible a través del Lunex Book y Docs.rs, con un proyecto de ejemplo listo para producción llamado Bevypunk también proporcionado.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.