Menu
CoddyTech

Muestra la puntuación

Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 2 de 56.

El text de un texto es una cadena, así que un número tiene que convertirse en texto antes de mostrarse. Al unirlo a una cadena con +, se consigue esto: "Wood: " + wood es Wood: 12 cuando wood es 12, y wood.ToString() es 12. El int por sí solo no sirve: woodText.text = wood; falla con CS0029, No se puede convertir implícitamente el tipo 'int' en 'string'.

El número está en un campo int, y el texto solo lo muestra. Un método vuelve a escribir el texto a partir del campo; cada cambio en el número lo llama, y Start() también lo hace, para que el primer fotograma muestre el valor real en vez de lo que se escribió en el Inspector. Aquí, la barra espaciadora corta 3 troncos:

public TMP_Text woodText;
private int wood;

void Start()
{
    ShowWood();
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        wood += 3;
        ShowWood();
    }
}

void ShowWood()
{
    woodText.text = "Wood: " + wood;
}

El texto cambia solo cuando cambia wood. Volver a escribirlo en cada Update() se vería igual, pero crearía una cadena nueva 60 veces por segundo sin motivo. El orden importa: si se llamara a ShowWood() antes de wood += 3, mostraría la cantidad anterior, una pulsación por detrás.

challenge icon

Desafío

Fácil

El jardinero planta árboles. Las flechas lo mueven y la barra espaciadora planta un retoño mientras queden semillas, como ya hace Gardener.cs. Muestra los conteos en pantalla; la escena vincula seedsText y treesText:

  • seedsText muestra las semillas restantes, como Seeds: 4, y treesText, los árboles plantados, como Trees: 1.
  • Ambos son correctos desde el primer fotograma y después de cada plantación. El Inspector le da al jardinero 5 semillas, aunque los textos de la escena todavía dicen Seeds: 10 y Trees: ?.
  • Escribe un método que establezca ambos textos y llámalo donde sea necesario.

Pulsa Play, planta hasta que se agoten las semillas y después pulsa Check.

Pruébalo tú mismo

using UnityEngine;
using TMPro;

public class Gardener : MonoBehaviour
{
    public float speed = 4f;
    public int seeds = 10;
    public GameObject saplingPrefab;
    public TMP_Text seedsText;
    public TMP_Text treesText;
    private int trees;

    void Update()
    {
        float move = Input.GetAxisRaw("Horizontal");
        transform.Translate(move * speed * Time.deltaTime, 0f, 0f);

        if (Input.GetKeyDown(KeyCode.Space) && seeds > 0)
        {
            Vector3 spot = new Vector3(transform.position.x, 0.5f, 1.5f);
            Instantiate(saplingPrefab, spot, Quaternion.identity);
            seeds--;
            trees++;
        }
    }

    // Muestra Seeds: y Trees: en los dos textos desde el primer fotograma
}
quiz iconPonte a prueba

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