El sistema de UI para el tiempo muestra y actualiza el cronómetro de supervivencia del jugador. Se implementa mediante una etiqueta (Label) que se actualiza en cada frame mientras el jugador está activo.
codeImplementación
func _crear_ui_tiempo():
# Crea la etiqueta que muestra el tiempo de supervivencia
etiqueta_tiempo = Label.new()
etiqueta_tiempo.text = "0.0 s"
etiqueta_tiempo.set("theme_override_font_sizes/font_size", TAM_TEXTO)
etiqueta_tiempo.visible = true
add_child(etiqueta_tiempo)
func _actualizar_tiempo(delta: float):
# Si seguimos vivos, sumamos delta al cronómetro
if not muerto:
tiempo_total += delta
# Redondeamos con un decimal
etiqueta_tiempo.text = str(snappedf(tiempo_total, 0.1)) + " s"
# Crea la etiqueta que muestra el tiempo de supervivencia
etiqueta_tiempo = Label.new()
etiqueta_tiempo.text = "0.0 s"
etiqueta_tiempo.set("theme_override_font_sizes/font_size", TAM_TEXTO)
etiqueta_tiempo.visible = true
add_child(etiqueta_tiempo)
func _actualizar_tiempo(delta: float):
# Si seguimos vivos, sumamos delta al cronómetro
if not muerto:
tiempo_total += delta
# Redondeamos con un decimal
etiqueta_tiempo.text = str(snappedf(tiempo_total, 0.1)) + " s"
timerProceso de actualización
add_box
Creación
Inicializa etiqueta con texto inicial
update
Actualización
Suma delta al tiempo total
format_list_numbered
Formateo
Redondea a un decimal
visibility
La etiqueta se oculta al morir (etiqueta_tiempo.visible = false)
text_format
Tamaño de texto controlado por theme_override_font_sizes/font_size
tuneCaracterísticas clave
calculate
tiempo_total - Acumulador de segundos transcurridos
straighten
TAM_TEXTO = 25 - Tamaño de fuente para las etiquetas
functions
snappedf(valor, paso) - Redondea con un paso específico
add_circle
La etiqueta se añade como nodo hijo mediante add_child()
refresh
Se actualiza en cada frame desde _process()