Exiba a pontuação
Parte da seção Criando jogos de verdade do Journey de Unity da Coddy. Lição 2 de 56.
O text de um texto é uma string, então um número precisa se tornar texto antes de ser exibido. Juntá-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' em 'string'.
O número fica em um campo int, e o texto apenas o exibe. Um método reescreve o texto a partir do campo; toda alteração no número chama esse método, assim como Start(), para que o primeiro frame 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 uma pressionada atrasada.
Desafio
FácilO jardineiro planta árvores. As setas o movimentam, e a tecla Espaço planta uma muda enquanto ainda houver sementes, como Gardener.cs já faz. Mostre as contagens na tela; a cena vincula seedsText e treesText:
seedsTextmostra quantas sementes restam, como emSeeds: 4, etreesTextmostra quantas árvores foram plantadas, como emTrees: 1.- Ambos estão corretos desde o primeiro quadro e após cada plantio. O Inspector dá 5 sementes ao jardineiro, embora os textos na cena ainda mostrem
Seeds: 10eTrees: ?. - Escreva um método que defina os dois textos e chame-o sempre que necessário.
Pressione Jogar, plante até as sementes acabarem e, em seguida, pressione 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 quadro
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
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ímetro4Cenas e Fases
Carregar uma CenaReiniciar a FasePróxima FaseManter entre CenasRevisão: Seleção de Fases10Projeto: Jogo de Plataforma 3D
O PercursoPlataformas Móveis2Botõ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 banco