A pontuação
Lição 11 de 14 do curso Jogo de Cobra 3D na Unity da Coddy.
A pontuação aumenta em GameManager, mas ninguém consegue vê-la. Um texto do TextMeshPro no canto superior esquerdo a exibe: um campo TMP_Text definido no Inspector, e sua propriedade text recebe um valor pelo código.
Escreva o texto no mesmo lugar em que o número muda, depois da alteração. Assim, a tela nunca fica desatualizada em relação à pontuação. Uma loja atualiza suas moedas da mesma forma:
public void Buy(int price)
{
coins -= price;
coinsText.text = "Coins: " + coins;
}Defina o texto uma vez também em Start(), para que o primeiro quadro mostre a pontuação real, independentemente do texto exibido na cena.
Desafio
Médio- Em
GameManager, adicioneusing TMPro;epublic TMP_Text scoreText;. A cena define como ScoreText, no canto superior esquerdo. - Em
Start(), exibaScore: 0. - Em
Eat(), exiba a nova pontuação, comoScore: 3após a terceira comida.
Pressione Play e coma, depois pressione Check.
Experimente você mesmo
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public Snake snake;
public GameObject foodPrefab;
private Transform food;
private int score;
void Awake()
{
Instance = this;
}
void Start()
{
food = Instantiate(foodPrefab).transform;
MoveFood();
}
public bool IsFood(Vector3 cell)
{
return cell == food.position;
}
public void Eat()
{
score++;
MoveFood();
}
void MoveFood()
{
List<Vector3> free = new List<Vector3>();
for (int x = -snake.edge; x <= snake.edge; x++)
{
for (int z = -snake.edge; z <= snake.edge; z++)
{
Vector3 cell = new Vector3(x, 0f, z);
if (!snake.Occupies(cell))
{
free.Add(cell);
}
}
}
food.position = free[Random.Range(0, free.Count)];
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.