bookReferencia de UI

Notas de referencia y patrones para el dibujo de UI en CSL.

Esta página recopila reglas, patrones y ejemplos de UI que son útiles una vez que conoces los conceptos básicos.

Lee Fundamentos de UI primero.

Principios básicos

  1. Y crece hacia arriba. Las coordenadas de pantalla usan (0, 0) en la esquina inferior izquierda.

  2. Empieza a partir de los rectángulos de pantalla. Usa UI.get_safe_screen_rect() o UI.get_screen_rect(), luego deriva todo a partir de esos rectángulos.

  3. Patrón push/pop. Usa defer para cada push para evitar filtrar el estado de la UI.

  4. Primero móvil. Evita las interacciones que solo funcionan con hover.

  5. Solo ASCII. Sin emojis ni Unicode en el texto de la UI.

  6. La UI debe renderizar en ao_late_update. Esto es necesario para una interacción correcta.

Inicio rápido: un botón HUD simple

Player :: class : Player_Base {
    ao_late_update :: method(dt: float) {
        if this->is_local_or_server() {
            draw_my_hud(this);
        }
    }
}

draw_my_hud :: proc(player: Player) {
    rect := UI.get_safe_screen_rect()
        ->bottom_right_rect()
        ->grow(40, 150, 40, 150)
        ->offset(-50, 50);

    bs := UI.default_button_settings();
    ts := UI.default_text_settings();

    if UI.button(rect, bs, ts, "Action").clicked {
        do_action(player);
    }
}

Dibujo básico

Cuadros e imágenes

Texto

Diseño: empieza a partir de rectángulos

Usa cut para el diseño

Las funciones cut deben usarse para el diseño al colocar múltiples elementos de UI:

Autoescalado y rectángulos sin escalar

Las funciones de rectángulo se escalan por UI.get_current_scale_factor() (basado en 1080p).

Si necesitas valores exactos de píxeles, usa las variantes _unscaled :

Botones

Reglas del sprite del botón

Debes usar uno de estos sprites al dibujar botones:

  • "$AO/new/modal/buttons_2/button_1.png" (Naranja)

  • "$AO/new/modal/buttons_2/button_2.png" (Verde)

  • "$AO/new/modal/buttons_2/button_3.png" (Rojo)

  • "$AO/new/modal/buttons_2/button_5.png" (Azul)

  • "$AO/new/modal/buttons_2/button_7.png" (Rosa)

  • "$AO/new/modal/buttons_2/button_8.png" (Gris)

  • "$AO/new/modal/buttons_2/button_9.png" (Blanco)

Gestión del estado de la UI

Usa defer para cada par push/pop:

IDs para elementos repetidos

Al dibujar listas o elementos repetidos, haz push de IDs únicos:

Tamaños comunes

Algunos tamaños que se sabe que se ven bien en todos los dispositivos:

  • Texto: Título 52, Cuerpo 36, Texto en espacio mundial 0.30

  • Rectángulos: Diálogo simple 600x400, Botón estándar 210x74, Botón de salida 65x65

Mejores prácticas

  • Usa defer para cada par push/pop.

  • Haz push de IDs para elementos repetidos.

  • Usa funciones sin escalar con dimensiones calculadas.

  • Ajusta las relaciones de aspecto de los iconos con rect->fit_aspect(texture->get_aspect()).

  • Comprueba siempre is_local_or_server() antes de dibujar UI interactiva.

Última actualización