🎮 UnityDocs

TextMeshPro: texto de calidad

El estándar de texto en Unity: por qué TextMeshPro sustituye al Text clásico, cómo funcionan sus fuentes SDF (nítidas a cualquier tamaño), el texto enriquecido (rich text), y cómo cambiarlo por código.

📄 ArtículoPrincipiante✅ RevisadoUnity 6.0 LTSActualizado 2026-07-17
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 7 min · ⌨️ Práctica 15 min

Por qué TextMeshPro y no Text#

El componente Text clásico (uGUI) se ve borroso al escalar y ofrece poco control. TextMeshPro (TMP) es el reemplazo oficial y el estándar actual: texto nítido a cualquier tamaño, contornos, sombras, degradados y texto enriquecido. En Unity 6 es la opción por defecto al crear texto.

Importar los TMP Essentials

La primera vez que usas TMP, Unity ofrece Window → TextMeshPro → Import TMP Essential Resources. Acéptalo: instala el shader y la fuente por defecto. Sin ellos, el texto no se ve bien.

El secreto: fuentes SDF#

TMP no guarda la fuente como píxeles, sino como SDF (Signed Distance Field): una representación que describe la distancia a los bordes de cada letra. Gracias a eso, la GPU redibuja el contorno perfectamente nítido a cualquier escala, y puede añadir contorno, sombra o brillo casi gratis.

Para usar tu propia tipografía: Window → TextMeshPro → Font Asset Creator, eliges el .ttf/.otf y generas un Font Asset SDF.

Crear y editar texto#

GameObject → UI → Text - TextMeshPro. En el Inspector controlas fuente, tamaño, alineación, Auto Size (ajuste automático al recuadro), espaciado y los efectos (Outline, Underlay/sombra) desde el material.

Texto enriquecido (rich text)#

TMP interpreta etiquetas dentro del propio texto:

texto
<b>Vida:</b> <color=#ff4444>50</color>/100
Pulsa <sprite name="boton_A"> para <i>saltar</i>
<size=150%>¡NIVEL COMPLETADO!</size>

Etiquetas útiles: <b> <i> <color> <size> <sprite> (iconos inline) <link> (zonas clicables) <align>. Perfecto para diálogos, tutoriales y textos de daño con estilo.

Cambiar el texto por código#

C#
using UnityEngine;
using TMPro;   // el namespace de TextMeshPro

public class Marcador : MonoBehaviour
{
    [SerializeField] private TextMeshProUGUI etiquetaPuntos;   // texto en un Canvas
    private int puntos;

    public void Sumar(int n)
    {
        puntos += n;
        etiquetaPuntos.text = "Puntos: " + puntos;   // acepta rich text también
    }
}
TextMeshProUGUI vs TextMeshPro

Hay dos componentes: TextMeshProUGUI para UI dentro de un Canvas (lo normal), y TextMeshPro (3D) para texto en el mundo (un cartel en la escena). Usa el UGUI para menús y HUD.

Errores frecuentes#

  • Concatenar strings en el Update cada fotograma (genera basura GC): actualiza el texto solo cuando cambia el valor.
  • No importar los TMP Essentials y ver el texto raro o invisible.
  • Usar el Text clásico en proyectos nuevos: TMP es el estándar.
  • Mezclar TextMeshPro (3D) donde querías TextMeshProUGUI (UI) y no verlo en el Canvas.

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

TextMeshPro es el estándar de texto en Unity: nítido a cualquier tamaño gracias a las fuentes SDF, con rich text (<b>, <color>, <sprite>...) para estilo y efectos. Usa TextMeshProUGUI en el Canvas y cámbialo por código con .text (evitando concatenar cada fotograma). Importa los TMP Essentials la primera vez. Para varios idiomas, combínalo con localización.

Fuentes y para profundizar