Menu
CoddyTech

Sobreviva

Parte da seção Arquitetura de jogos no Unity do Journey de Unity da Coddy. Lição 47 de 50.

challenge icon

Desafio

Médio

Última etapa: a partida termina, e o melhor resultado é mantido. Mantenha tudo das lições anteriores. O canvas tem um GameOverPanel oculto com ResultText, BestText e um RestartButton com o rótulo Fight again, e o objeto GameManager tem seu script GameManager, com hero, spawner, gameOverPanel, resultText, bestText e restartButton definidos no Inspector.

  • Hero recebe public event Action Died, acionado quando sua vida chega a 0, depois que ele se desativa.
  • Em GameManager.cs, adicione uma classe [System.Serializable] BestRun com public int wave e public int kills.
  • GameManager escuta Died do herói e Enemy.Died, que conta as eliminações desta partida: inscreva-se em OnEnable e cancele a inscrição em OnDisable. Em Start, ele carrega o melhor resultado de best.json em Application.persistentDataPath com JsonUtility, se esse arquivo existir, oculta o painel e faz com que restartButton reinicie o jogo.
  • Quando o herói morrer, pare o jogo (Time.timeScale 0). O resultado da partida é a Wave do spawner e o número de eliminações. É um novo recorde se chegou a uma onda mais alta ou à mesma onda com mais eliminações: então ele se torna o melhor resultado e é salvo em best.json com JsonUtility.ToJson. Mostre o resultado da partida em resultText, como Wave 2, 7 kills, e o melhor resultado em bestText, como Best: wave 3, 12 kills, e então mostre o painel.
  • O reinício restaura a escala de tempo para 1 e carrega a cena novamente.

Pressione Play e lute até cair, depois tente superar seu recorde. Em seguida, Check.

Experimente você mesmo

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // Uma aula posterior preencherá isto: o fim da partida e a melhor partida.
}

Todas as lições de Arquitetura de jogos no Unity