Exiba a pontuação
Parte da seção Criando Jogos de Verdade do Journey de Unity da Coddy. Lição 2 de 60.
O text de um texto é uma string, então um número precisa se tornar texto antes de ser exibido. Concatená-lo a uma string com + faz isso: "Wood: " + wood resulta em Wood: 12 quando wood é 12, e wood.ToString() resulta em 12. O int sozinho não serve: woodText.text = wood; falha com CS0029, não é possível converter implicitamente o tipo 'int' para 'string'.
O número fica em um campo int, e o texto apenas o exibe. Um método reescreve o texto usando o valor do campo; toda alteração no número chama esse método, assim como Start(), para que o primeiro quadro mostre o valor real em vez do que foi digitado no Inspector. Aqui, a tecla 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;
}O texto só muda quando wood muda. Reescrevê-lo em cada Update() teria a mesma aparência, mas criaria uma nova string 60 vezes por segundo sem necessidade. A ordem importa: chamar ShowWood() antes de wood += 3 exibiria a contagem antiga, ficando um pressionamento atrasada.
Desafio
FácilMostre na tela as sementes e as árvores do jardineiro.
- Em
Gardener.cs, escrevavoid ShowCounts()que defineseedsText.textcomo"Seeds: " + seedsetreesText.textcomo"Trees: " + trees. - Chame-o em um novo
Start()e, noifdo plantio, depois detrees++;.
Pressione “Jogar”: os textos mostram Seeds: 5 e Trees: 0 e mudam a cada muda. Depois, clique em “Verificar”.
Experimente você mesmo
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++;
}
}
// Mostre Seeds: e Trees: nos dois textos desde o primeiro frame
}
Todas as lições de Criando Jogos de Verdade
1Texto na tela
Canvas e textoExiba a pontuaçãoFormate númerosUm cronômetro regressivoRevisão: velocímetro2Botões e telas
Botões e onClickLambdasConectando no InspectorPainéis ligados e desligadosBarras de vidaRevisão: Loja de melhorias5Salvando com PlayerPrefs
Salvar um númeroCarregar com um valor padrãoRecordeSalvar configuraçõesRevisão: Moedas no bancoPratique por conta própria: Playground de Unity