Melhor Corrida
Parte da seção Criando jogos de verdade do Journey de Unity da Coddy. Lição 32 de 56.
Desafio
MédioÚltima etapa: lembre-se da melhor corrida. Mantenha tudo das lições anteriores. O canvas tem um BestText no canto superior direito, e o painel tem um NewBestText oculto (Novo recorde!); a cena os coloca em dois novos campos de GameManager, public TMP_Text bestText; e public GameObject newBestText;. Salve o melhor resultado usando a chave BestRun, em metros inteiros:
- Em
Start(), carregue o melhor resultado (0 para um jogador novo) e exiba-o comoBest: 57 m. - Em
GameOver(), quando os metros inteiros da corrida,Mathf.FloorToInt(distance), superarem o melhor resultado, salve o novo melhor resultado, exiba-o e mostrenewBestText. Uma corrida mais curta não altera nada.
O melhor resultado permanece ao jogar novamente e ao sair do jogo. Pressione Play, estabeleça um melhor resultado e tente superá-lo; depois, pressione Check.
Experimente você mesmo
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public enum GameState { Playing, GameOver }
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public float speed = 10f;
public float speedUp = 0.5f;
public float maxSpeed = 20f;
public TMP_Text distanceText;
public GameObject gameOverPanel;
public Button restartButton;
public GameState state = GameState.Playing;
private float distance;
void Awake()
{
Instance = this;
}
void Start()
{
restartButton.onClick.AddListener(Restart);
}
void Update()
{
if (state != GameState.Playing) return;
speed = Mathf.Min(speed + speedUp * Time.deltaTime, maxSpeed);
distance += speed * Time.deltaTime;
distanceText.text = "Distance: " + Mathf.FloorToInt(distance) + " m";
}
public void GameOver()
{
state = GameState.GameOver;
speed = 0f;
gameOverPanel.SetActive(true);
}
void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
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 banco3O Gerenciador do Jogo
Um Script Controla o JogoO SingletonEstados do JogoAlternando o EstadoRevisão: Gerenciador de Rodadas6Projeto: Corredor Infinito
Três FaixasObstáculos à Frente