Conserver la meilleure tentative
Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 60 sur 64.
Arena Survivor est terminé : un Enemy abstrait avec deux types, IDamageable pour chaque coup reçu, des vagues provenant d’un ScriptableObject, des objets à ramasser derrière une interface, un HUD qui se contente d’écouter et, enfin, une sauvegarde JSON de la meilleure partie.
Défi
MoyenConserve le meilleur résultat dans best.json.
- Dans
GameManager.cs, ajoute une classe[System.Serializable]BestRunavec les entiers publicswaveetkills. Startle charge depuisbest.jsondansApplication.persistentDataPathavecJsonUtility, si le fichier existe.- À la fin de la partie, un nombre de vagues plus élevé, ou le même nombre de vagues avec plus d’éliminations, devient le meilleur résultat et est enregistré ;
bestTextafficheBest: wave 3, 12 kills.
Appuie sur « Jouer » et fais-toi éliminer deux fois : le meilleur résultat reste enregistré. Puis appuie sur « Vérifier ».
Essayez vous-même
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);
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Architecture de jeu dans Unity
1Des composants, pas des hiérarchies
De petits composantsUn script de base pour les ennemisComposants abstraitsDes composants qui fonctionnent ensembleRécapitulatif : tourelle modulaireRécapitulatif : canon double4Données sérialisées
Classes sérialisablesListes dans l’InspecteurÉnumérations dans l’InspecteurRécapitulatif : table de butinRécapitulatif : tirer le butin7Machines à états
Les états sous forme de classesL’état d’alerteUne machine à étatsTransitionsL’intelligence des ennemisLe chevalier attaqueRécapitulatif : états des portes10Projet : Survivant de l’arène
Le hérosTypes d’ennemis2Les interfaces dans Unity
IDamageableInterfaces et TryGetComponentGetComponentsRécapitulatif : touche d’interactionLe plus proche à portée5ScriptableObjects
Ressources de donnéesStatistiques des armesParamètres partagésSauver le ventLes vagues comme donnéesRécapitulatif : base de données des objetsRécapitulatif : acheter dans la boutique3Événements
Les événements C# dans UnityS’abonner dans OnEnableChamps UnityEventLes événements pilotent l’interfaceRécapitulatif : fenêtre de succèsRécapitulatif : minuteur de la fenêtreEntraînez-vous par vous-même : Playground Unity