Cómo escribir un texto Text Mesh Pro desde Script en Unity

Introducción

En este artícu­lo vamos a ver cómo tra­ba­jar con los com­po­nentes Text Mesh Pro des­de un Script, conc­re­ta­mente vamos a crear un obje­to tex­to en un Can­vas y otro Text Mesh para el espa­cio 3D y creare­mos un Script den­tro del cual vamos a escribir el tex­to TextMesh Pro a través de códi­go.

Tam­bién vamos a ver cómo cam­biar el col­or del tex­to a través de códi­go.

Ima­gen 1: El com­po­nente Text se ha trasla­do a la sec­ción "Lega­cy".

Tengo el vídeo perfecto para explicar esto

En este vídeo vemos cómo con­fig­u­rar Text Mesh PRO, cómo mostrar un tex­to en pan­talla y cómo escribir el tex­to a través de códi­go en Unity.


Crear objetos Text Mesh Pro para World Space y Canvas

Comen­zamos cre­an­do los obje­tos Text que pos­te­ri­or­mente mod­i­fi­care­mos des­de un Script, vamos a crear dos tipos de obje­tos Text Mesh Pro, uno para usar en la inter­faz grá­fi­ca y otro para usar como un obje­to 3D de la escena.

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

En Uni­ty los obje­tos Text Mesh Pro que están en la sec­ción UI deben colo­carse como hijos de un obje­to Can­vas, por lo que vamos a asumir que ya ten­emos uno de estos obje­tos en la esce­na. Para crear un nue­vo obje­to Text Mesh Pro vamos a la jer­ar­quía, hace­mos clic dere­cho sobre el Can­vas (o algún obje­to hijo del Can­vas), vamos a la sec­ción UI y elegi­mos la opción "Text — Text Mesh Pro", como se obser­va en la ima­gen 2.A.

Ima­gen 2.A: Opción para crear un nue­vo tex­to Text Mesh Pro para la inter­faz gráfica.

Creación de Text Mesh Pro Text para el World Space

La otra opción para escribir tex­to en pan­talla es usar un com­po­nente Text de Text Mesh Pro como un obje­to 3D y por lo tan­to que se encuen­tre en una posi­ción del mun­do, este obje­to lo encon­traremos en la ven­tana de creación den­tro de la sec­ción 3D, como se obser­va en la ima­gen 2.B.

Ima­gen 2.B: Opción para crear un nue­vo tex­to Text Mesh Pro como un obje­to 3D de la escena.

Primera vez usando Text Mesh Pro

En caso de que aún no hayamos con­fig­u­ra­do Text Mesh Pro nos sal­drá la ven­tana de la ima­gen 3 donde nos dá la opción de impor­tar los com­po­nentes nece­sar­ios para usar Text Mesh Pro, le damos clic en "Import TMP Essen­tials", como se obser­va en la ima­gen 3. El segun­do botón para impor­tar ejem­p­los y extras es opcional.

Ima­gen 3: Vetana para impor­tar paque­te Text Mesh Pro en Unity.

Resultado de la creación de los objetos

Una vez crea­d­os los obje­tos, les hice unas pocas mod­i­fi­ca­ciones en el inspec­tor (tamaño de fuente, text) y el resul­ta­do es el siguiente:

Ima­gen 4.a: Obje­tos Text Mesh Pro en la jerarquía.
Ima­gen 4.b: Obje­tos Text Mesh Pro visu­al­iza­dos en la escena.

Una vez crea­d­os los obje­tos e impor­ta­do Text Mesh Pro ya podemos comen­zar a usar el com­po­nente Text Mesh Pro Text des­de el inspec­tor o escribir­lo a través de un Script. En la ima­gen 5 vemos el com­po­nente Text en la ven­tana Inspec­tor, tiene muchas más opciones de con­fig­u­ración com­para­do con la antigua solu­ción para textos.

IMPORTANTE

En la ima­gen 5 vemos el cam­po para edi­tar el tex­to que aparece en pan­talla, actual­mente tiene escrito el val­or "Can­vas Text", ese es el cam­po que quer­e­mos edi­tar por códi­go y para hac­er­lo ten­dremos que edi­tar la vari­able "text" de ese componente.

Ima­gen 5: Com­po­nente Text de Text Mesh Pro vis­to des­de el inspector.

Script para escribir texto en componente Text Mesh Pro

Para poder escribir un com­po­nente Text Mesh Pro por códi­go voy a crear un script y asig­narlo a algún GameOb­ject de la jer­ar­quía, como se obser­va en la ima­gen 6. En este caso mi Script se lla­ma "Mod­i­fy­TextMesh­Pro", den­tro de este script voy a mod­i­ficar los textos.

Ima­gen 6: Creamos un script y lo asig­namos a algún obje­to de la jerarquía.

Importar namespace TMPro en nuestro Script

Para poder usar los com­po­nentes Text Mesh Pro cómoda­mente es con­ve­niente impor­tar el name­space "TMPro" agre­gan­do en la cabecera de nue­stro script la línea "using TMPro;" como que se obser­va en la ima­gen 7.

Ima­gen 7: Declar­amos que vamos a uti­lizar el name­space "TMPro" en la cabecera de nue­stro script.

Declaración de las variables a utilizar

Vamos a declarar dos vari­ables de tipo "TMP_Text" donde estarán alo­jadas las ref­er­en­cias de los com­po­nentes Text que quer­e­mos mod­i­ficar, en este casos los nom­bres de mis vari­ables serán "can­vas­Text" y "world­Text" en estas vari­ables colo­caré las com­po­nentes Text Mesh Pro Text del can­vas y del espa­cio respectivamente.

DETALLE

Los nom­bres "can­vas­Text" y "world­Text" son los nom­bres que elegí para esas vari­ables, se puede usar cualquier otro nom­bre siem­pre que con­tenga los car­ac­teres permitidos.

Ima­gen 8: Declaración de las vari­ables que se uti­lizarán para mod­i­ficar el tex­to Text Mesh Pro.

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

La ini­cial­ización de este tipo de vari­ables no prim­i­ti­vas es cru­cial, si no nos encar­g­amos de colo­car den­tro de la vari­able el obje­to pre­ciso al que quer­e­mos referirnos nos dará error de ref­er­en­cia null ("Null Ref­er­ence Excep­tion").

Hay muchas for­mas de ini­cializar las vari­ables, en este caso lo haré de una de las for­mas más sim­ple que es arras­tran­do los GameOb­jects que con­tienen los com­po­nentes Text que quiero mod­i­ficar a los espa­cios de las vari­ables en el inspector

Ima­gen 9: Se arras­tran los GameOb­jects apropi­a­dos a los espa­cios en el inspec­tor para ini­cializar las variables.

No aparece la variable en el inspector

En el caso de que no aparez­ca la vari­able en el inspec­tor nor­mal­mente es porque su vis­i­bil­i­dad es pri­va­da, se puede solu­cionar declaran­do las vari­ables como públi­cas como se obser­va en la ima­gen 8, anteponien­do la pal­abra "pub­lic", o tam­bién se pueden declarar como pri­vadas pero indi­can­do que sean seri­al­izadas por el inspec­tor, de la sigu­iente forma:

[Seri­al­ize­Field]
TMP_Text can­vas­Text;

O tam­bién:

[Seri­al­ize­Field]
pri­vate TMP_Text canvasText;

Otro moti­vo por el que las vari­ables no aparez­can en el inspec­tor puede ser cuan­do hay errores en con­so­la y los cam­bios hechos en los scripts no se actu­al­izan, para resolver esto deber­e­mos solu­cionar todos los errores que haya en con­so­la, una vez hecho esto Uni­ty com­pi­lará y apare­cerá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 ini­cial­iza­do las vari­ables podemos uti­lizarlas, en este caso si quer­e­mos mod­i­ficar el tex­to que mues­tra el com­po­nente Text Mesh Pro, deber­e­mos mod­i­ficar la vari­able "text" defini­da en su inte­ri­or, para ello usamos el oper­ador pun­to que nos per­mite acced­er a las vari­ables y fun­ciones públi­cas definidas den­tro de un objeto,

Ima­gen 10.A: Escribir un tex­to Text Mesh Pro des­de un Script en Unity.
Ima­gen 10.B: Al pul­sar play vemos como se mod­i­f­i­can los tex­tos en pantalla.

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

Ima­gen 11.A: En las líneas 22 y 23 se cam­bia el col­or a los tex­tos Text Mesh Pro a través de código.
Ima­gen 11.B: Al pul­sar play vemos como cam­bian los col­ores de los tex­tos en pantalla.

LLEGAMOS AL FINAL DE ESTE ARTÍCULO

Espero que te haya sido útil! Por favor con­sid­era com­par­tir­lo para apo­yar esta página

Ten­go mucha más infor­ma­ción útil sobre Blender


Scroll al inicio
Secured By miniOrange