Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Muestra en ZoneText, en la parte superior, en qué zona está el explorador.

  1. En Explorer.cs, añade using TMPro; y el campo public TMP_Text zoneText;. La escena vincula ZoneText con ese nombre.
  2. En Update(), debajo del comentario, establece zoneText.text en Zone: Beach mientras transform.position.x sea menor que 2, y en Zone: Jungle en 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

Practica por tu cuenta: Playground de Unity