Canvas y texto
Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 1 de 60.
Unity dibuja el texto, los botones y las barras en pantalla con su sistema de interfaz de usuario. En Unity 6, GameObject > UI > Text - TextMeshPro añade un objeto de texto llamado Text (TMP); la primera vez, Unity te pide importar TMP Essentials, que el texto necesita para su fuente. Si la escena aún no tiene un Canvas, Unity crea uno y coloca el texto dentro, además de un EventSystem, por el que pasan los clics en la interfaz. El Canvas dibuja sus elementos secundarios sobre la imagen de la cámara, en una posición fija de la pantalla, independientemente de hacia dónde mire la cámara. Configura su Canvas Scaler en Scale With Screen Size, 1920 x 1080, Match 0.5, como en todas las escenas de este curso, y la disposición mantendrá sus proporciones con cualquier tamaño de pantalla.
El componente del texto es TextMeshPro - Text (UI). Los scripts lo guardan en un campo de su tipo base TMP_Text, del espacio de nombres TMPro, y cambian lo que muestra mediante su propiedad text, que es una cadena. Este script asigna un nombre al nivel cuando empieza:
using UnityEngine;
using TMPro;
public class LevelIntro : MonoBehaviour
{
public TMP_Text titleText;
void Start()
{
titleText.text = "World 2: Ice Caves";
}
}Arrastra el objeto Text (TMP) desde la Jerarquía hasta el campo Title Text del Inspector, y Unity coloca su componente de texto en el campo. Sin using TMPro;, el nombre TMP_Text es desconocido y el script no se compila (CS0246). Si dejas el campo vacío, la primera instrucción titleText.text genera una UnassignedReferenceException. Lo que escribe el script reemplaza el texto introducido en Text Input en el Inspector, que en un texto nuevo es New Text.
Desafío
FácilMuestra en ZoneText, en la parte superior, en qué zona está el explorador.
- En
Explorer.cs, añadeusing TMPro;y el campopublic TMP_Text zoneText;. La escena vincula ZoneText con ese nombre. - En
Update(), debajo del comentario, establecezoneText.textenZone: Beachmientrastransform.position.xsea menor que2, y enZone: Jungleen caso contrario.
Pulsa «Jugar» y camina hacia la derecha hasta llegar al césped: el texto cambia a Jungle. Luego pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Explorer : MonoBehaviour
{
public float speed = 4f;
void Update()
{
float move = Input.GetAxisRaw("Horizontal");
transform.Translate(move * speed * Time.deltaTime, 0f, 0f);
// Muestra la zona en ZoneText: Zona: Playa cuando x sea menor que 2, Zona: Selva a partir de 2
}
}
Todas las lecciones de Creación de juegos reales
1Texto en pantalla
Canvas y textoMuestra la puntuaciónDa formato a los númerosUn temporizador de cuenta regresivaRepaso: velocímetro2Botones y pantallas
Botones y onClickLambdasConectar en el InspectorPaneles activados y desactivadosBarras de saludRepaso: tienda de mejoras5Guardar con PlayerPrefs
Guardar un númeroCargar con un valor predeterminadoPuntuación más altaGuardar ajustesRepaso: monedas en el banco3El gestor del juego
Un solo script ejecuta el juegoEl SingletonEstados del juegoActivar el estadoRepaso: gestor de rondas6Proyecto: Corredor sin fin
Tres carrilesObstáculos por delante9El nuevo sistema de entrada
Dos sistemas de entradaTeclado y ratónPulsado en este fotogramaAcciones de entradaRepaso: cambio de entradaPractica por tu cuenta: Playground de Unity