O Fim da Noite
Parte da seção Criando Jogos de Verdade do Journey de Unity da Coddy. Lição 60 de 60.
O último desafio conclui um jogo inteiro: um gerenciador com estados, uma pausa que para o tempo, dois finais e uma reinicialização que restaura a escala de tempo.
Desafio
DifícilAdicione uma pausa, dois finais e uma reinicialização.
pauseButtonalterna apenas entre Playing e Paused: Paused defineTime.timeScalecomo 0 e mostrapausePanel; Playing desfaz as duas coisas.- Aos 0 segundos, a noite é Won. Em Won ou Lost: escala de tempo 0, com
endPanelexibindoYou survived the night!ouThe bats got youemendText. restartButtondefine a escala de tempo como 1 e recarrega a cena.
Pressione “Jogar”, pause, perca e jogue novamente. Depois, “Verificar”.
Experimente você mesmo
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public class GameManager : MonoBehaviour
{
public enum State { Playing, Paused, Won, Lost }
public static GameManager Instance;
public float nightLength = 15f;
public float spawnEvery = 2f;
public GameObject batPrefab;
public Transform[] spawnPoints;
public TMP_Text dawnText;
public Button pauseButton;
public GameObject pausePanel;
public GameObject endPanel;
public TMP_Text endText;
public Button restartButton;
public State state;
private float timeLeft;
private float spawnTimer;
void Awake()
{
Instance = this;
}
void Start()
{
state = State.Playing;
timeLeft = nightLength;
ShowDawn();
}
void Update()
{
if (state != State.Playing) return;
timeLeft -= Time.deltaTime;
spawnTimer += Time.deltaTime;
if (spawnTimer >= spawnEvery)
{
spawnTimer -= spawnEvery;
Transform point = spawnPoints[Random.Range(0, spawnPoints.Length)];
Instantiate(batPrefab, point.position, Quaternion.identity);
}
ShowDawn();
}
public void Lose()
{
if (state != State.Playing) return;
state = State.Lost;
}
void ShowDawn()
{
dawnText.text = "Dawn in " + Mathf.CeilToInt(timeLeft);
}
}
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í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