Canvas y texto
Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 1 de 56.
Unity dibuja texto en pantalla, botones y barras 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 pide importar los elementos esenciales de TMP, 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 de la interfaz de usuario. El Canvas dibuja sus elementos secundarios sobre la imagen de la cámara, en un lugar fijo de la pantalla, dondequiera que mire la cámara. Configura su Canvas Scaler en Scale With Screen Size, 1920 x 1080, Match 0.5, como se hace en todas las escenas de este curso, y el diseño conserva sus proporciones en 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 el nombre al nivel al iniciarse:
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) de 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, el primer titleText.text produce una UnassignedReferenceException. Lo que escribe el script reemplaza el texto de Text Input escrito en el Inspector, que en un texto nuevo es New Text.
Desafío
FácilEl explorador recorre la isla con las flechas izquierda y derecha, como ya lo hace Explorer.cs. Muestra dónde está en ZoneText, en la parte superior de la pantalla, donde todavía aparece Nuevo texto:
- Agrega
using TMPro;y un campo públicoTMP_TextllamadozoneText. La escena vincula ZoneText a un campo con ese nombre exacto. - En cada fotograma, el texto muestra
Zone: Beachmientras la coordenada x del explorador sea menor que 2, yZone: Junglea partir de 2.
Presiona Jugar, camina sobre el césped y vuelve, luego presiona 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: Zone: Beach si x es menor que 2, Zone: Jungle a partir de 2
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
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ímetro4Escenas y niveles
Cargar una escenaReiniciar el nivelSiguiente nivelConservar entre escenasRepaso: selección de nivel10Proyecto: plataformas 3D
El recorridoPlataformas móviles2Botones 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 infinito
Tres carrilesObstáculos por delante9El nuevo sistema de entrada
Dos sistemas de entradaTeclado y ratónPulsado en este fotogramaAcciones de entradaRepaso: cambio de entrada