Guarde sua Melhor Partida
Parte da seção Arquitetura de Jogos no Unity do Journey de Unity da Coddy. Lição 60 de 64.
Arena Survivor está completo: um Enemy abstrato com dois tipos, IDamageable para cada acerto, ondas vindas de um ScriptableObject, itens coletáveis por trás de uma interface, um HUD que apenas escuta e, por fim, um salvamento JSON da melhor partida.
Desafio
MédioMantenha a melhor partida em best.json.
- Em
GameManager.cs, adicione uma classeBestRuncom o atributo[System.Serializable]e os ints públicoswaveekills. Startcarrega os dados debest.jsonemApplication.persistentDataPathcomJsonUtility, se o arquivo existir.- Ao fim do jogo, uma onda mais alta, ou a mesma onda com mais eliminações, torna-se a melhor e é salva;
bestTextexibeBest: wave 3, 12 kills.
Pressione “Jogar” e morra duas vezes: o recorde permanece. Depois, pressione “Verificar”.
Experimente você mesmo
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using TMPro;
public class GameManager : MonoBehaviour
{
[SerializeField] private Hero hero;
[SerializeField] private WaveSpawner spawner;
[SerializeField] private GameObject gameOverPanel;
[SerializeField] private TMP_Text resultText;
[SerializeField] private TMP_Text bestText;
[SerializeField] private Button restartButton;
private int kills;
void OnEnable()
{
hero.Died += GameOver;
Enemy.Died += CountKill;
}
void OnDisable()
{
hero.Died -= GameOver;
Enemy.Died -= CountKill;
}
void Start()
{
gameOverPanel.SetActive(false);
restartButton.onClick.AddListener(Restart);
}
void CountKill(Enemy enemy)
{
kills++;
}
void GameOver()
{
Time.timeScale = 0f;
int wave = spawner.Wave;
resultText.text = "Wave " + wave + ", " + kills + " kills";
gameOverPanel.SetActive(true);
}
void Restart()
{
Time.timeScale = 1f;
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Arquitetura de Jogos no Unity
1Componentes, não hierarquias
Componentes pequenosUm script base de inimigoComponentes abstratosComponentes trabalhando juntosRevisão: torre modularRevisão: canhão duplo4Dados Serializados
Classes SerializáveisListas no InspectorEnums no InspectorRevisão: Tabela de LootRevisão: Sorteie o Loot7Máquinas de estados
Estados como classesO estado de alertaUma máquina de estadosTransiçõesCérebros dos inimigosO cavaleiro atacaRevisão: estados da porta10Projeto: Sobrevivente da Arena
O HeróiTipos de Inimigos2Interfaces no Unity
IDamageableInterfaces e TryGetComponentGetComponentsRevisão: tecla de interaçãoRevisão: mais próximo ao alcance5ScriptableObjects
Ativos de DadosAtributos da ArmaConfigurações CompartilhadasSalve o VentoOndas como DadosRevisão: Banco de ItensRevisão: Comprar na LojaPratique por conta própria: Playground de Unity