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 60.

El text de un texto es una cadena, así que un número debe convertirse en texto antes de mostrarse. Al concatenarlo con una cadena usando + se consigue eso: "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 vive en un campo int, y el texto solo lo muestra. Un método reescribe 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 lugar del que se escribió en el Inspector. Aquí, Space 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 solo cambia cuando cambia wood. Reescribirlo en cada Update() se vería igual, pero construiría una cadena nueva 60 veces por segundo sin motivo. El orden importa: llamar a ShowWood() antes de wood += 3 mostraría el recuento anterior, una pulsación de retraso.

challenge icon

Desafío

Fácil

Muestra en pantalla las semillas y los árboles del jardinero.

  1. En Gardener.cs, escribe void ShowCounts() para asignar "Seeds: " + seeds a seedsText.text y "Trees: " + trees a treesText.text.
  2. Llámala en un nuevo Start() y en el if de plantación después de trees++;.

Pulsa «Jugar»: los textos muestran Seeds: 5 y Trees: 0, y cambian con cada arbolito. Después, pulsa «Comprobar».

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
}

Todas las lecciones de Creación de juegos reales

Practica por tu cuenta: Playground de Unity