Cómo usar Text Mesh Pro desde Script en Unity

En este vídeo muestro cómo configurar TextMesh PRO, cómo mostrar un texto en pantalla y cómo escribir el texto a través de código en Unity.


Introducción

En este artículo vamos a ver cómo trabajar con los componentes Text Mesh Pro desde un Script, concretamente vamos a crear un objeto texto en un Canvas y otro Text Mesh para el espacio 3D y crearemos un Script dentro del cual vamos a escribir el texto TextMesh Pro a través de código.

También vamos a ver cómo cambiar el color del texto a través de código.

Imagen 1: El componente Text se ha traslado a la sección “Legacy”.

Crear objetos TextMesh Pro para World Space y Canvas

Comenzamos creando los objetos Text que posteriormente modificaremos desde un Script, vamos a crear dos tipos de objetos TextMesh Pro, uno para usar en la interfaz gráfica y otro para usar como un objeto 3D de la escena.

Creación de Text Mesh Pro Text para la interfaz gráfica

En Unity los objetos Text Mesh Pro que están en la sección UI deben colocarse como hijos de un objeto Canvas, por lo que vamos a asumir que ya tenemos uno de estos objetos en la escena. Para crear un nuevo objeto Text Mesh Pro vamos a la jerarquía, hacemos clic derecho sobre el Canvas (o algún objeto hijo del Canvas), vamos a la sección UI y elegimos la opción “Text – Text Mesh Pro”, como se observa en la imagen 2.A.

Imagen 2.A: Opción para crear un nuevo texto Text Mesh Pro para la interfaz gráfica.

Creación de TextMesh Pro Text para el World Space

La otra opción para escribir texto en pantalla es usar un componente Text de Text Mesh Pro como un objeto 3D y por lo tanto que se encuentre en una posición del mundo, este objeto lo encontraremos en la ventana de creación dentro de la sección 3D, como se observa en la imagen 2.B.

Imagen 2.B: Opción para crear un nuevo texto Text Mesh Pro como un objeto 3D de la escena.

Primera vez usando TextMesh Pro

En caso de que aún no hayamos configurado Text Mesh Pro nos saldrá la ventana de la imagen 3 donde nos dá la opción de importar los componentes necesarios para usar Text Mesh Pro, le damos clic en “Import TMP Essentials”, como se observa en la imagen 3. El segundo botón para importar ejemplos y extras es opcional.

Imagen 3: Vetana para importar paquete Text Mesh Pro en Unity.

Resultado de la creación de los objetos

Una vez creados los objetos, les hice unas pocas modificaciones en el inspector (tamaño de fuente, text) y el resultado es el siguiente:

Imagen 4.a: Objetos Text Mesh Pro en la jerarquía.
Imagen 4.b: Objetos Text Mesh Pro visualizados en la escena.

Una vez creados los objetos e importado Text Mesh Pro ya podemos comenzar a usar el componente Text Mesh Pro Text desde el inspector o escribirlo a través de un Script. En la imagen 5 vemos el componente Text en la ventana Inspector, tiene muchas más opciones de configuración comparado con la antigua solución para textos.

IMPORTANTE

En la imagen 5 vemos el campo para editar el texto que aparece en pantalla, actualmente tiene escrito el valor “Canvas Text”, ese es el campo que queremos editar por código y para hacerlo tendremos que editar la variable “text” de ese componente.

Imagen 5: Componente Text de Text Mesh Pro visto desde el inspector.

Script para escribir texto en componente Text Mesh Pro

Para poder escribir un componente Text Mesh Pro por código voy a crear un script y asignarlo a algún GameObject de la jerarquía, como se observa en la imagen 6. En este caso mi Script se llama “ModifyTextMeshPro“, dentro de este script voy a modificar los textos.

script para editar textmesh pro en Unity
Imagen 6: Creamos un script y lo asignamos a algún objeto de la jerarquía.

Importar namespace TMPro en nuestro Script

Para poder usar los componentes Text Mesh Pro cómodamente es conveniente importar el namespace “TMPro” agregando en la cabecera de nuestro script la línea “using TMPro;” como que se observa en la imagen 7.

Imagen 7: Declaramos que vamos a utilizar el namespace “TMPro” en la cabecera de nuestro script.

Declaración de las variables a utilizar

Vamos a declarar dos variables de tipo “TMP_Text” donde estarán alojadas las referencias de los componentes Text que queremos modificar, en este casos los nombres de mis variables serán “canvasText” y “worldText” en estas variables colocaré las componentes Text Mesh Pro Text del canvas y del espacio respectivamente.

DETALLE

Los nombres “canvasText” y “worldText” son los nombres que elegí para esas variables, se puede usar cualquier otro nombre siempre que contenga los caracteres permitidos.

variables tipo TextMesh Pro para usarlas dentro de un script en Unity
Imagen 8: Declaración de las variables que se utilizarán para modificar el texto Text Mesh Pro.

Inicialización de las variables (Asignación de referencias)

La inicialización de este tipo de variables no primitivas es crucial, si no nos encargamos de colocar dentro de la variable el objeto preciso al que queremos referirnos nos dará error de referencia null (“Null Reference Exception”).

Hay muchas formas de asignar las referencias en Unity, en este caso lo haré de una de las formas más simple que es arrastrando los GameObjects que contienen los componentes Text que quiero modificar a los espacios de las variables en el inspector.

Imagen 9: Se arrastran los GameObjects apropiados a los espacios en el inspector para inicializar las variables.

No aparece la variable en el inspector

En el caso de que no aparezca la variable en el inspector normalmente es porque su visibilidad es privada, se puede solucionar declarando las variables como públicas como se observa en la imagen 8, anteponiendo la palabra “public”, o también se pueden declarar como privadas pero indicando que sean serializadas por el inspector, de la siguiente forma:

[SerializeField]
TMP_Text canvasText;

O también:

[SerializeField]
private TMP_Text canvasText;

Otro motivo por el que las variables no aparezcan en el inspector puede ser cuando hay errores en consola y los cambios hechos en los scripts no se actualizan, para resolver esto deberemos solucionar todos los errores que haya en consola, una vez hecho esto Unity compilará y aparecerán las nuevas modificaciones.

Instrucciones de código para modificar el texto Text Mesh Pro a través de Script y pruebas

Una vez que hemos inicializado las variables podemos utilizarlas, en este caso si queremos modificar el texto que muestra el componente TextMesh Pro, deberemos modificar la variable “text” definida en su interior, para ello usamos el operador punto que nos permite acceder a las variables y funciones públicas definidas dentro de un objeto,

Imagen 10.A: Escribir un texto Text Mesh Pro desde un Script en Unity.
Imagen 10.B: Al pulsar play vemos como se modifican los textos en pantalla.

Extra: Cambiar el color de un texto Text Mesh Pro por código

Imagen 11.A: En las líneas 22 y 23 se cambia el color a los textos Text Mesh Pro a través de código.
Imagen 11.B: Al pulsar play vemos como cambian los colores de los textos en pantalla.

Scroll al inicio
Secured By miniOrange