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.
Desafío
FácilMuestra en pantalla las semillas y los árboles del jardinero.
- En
Gardener.cs, escribevoid ShowCounts()para asignar"Seeds: " + seedsaseedsText.texty"Trees: " + treesatreesText.text. - Llámala en un nuevo
Start()y en elifde plantación después detrees++;.
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
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