Meilleure course
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 32 sur 56.
Défi
MoyenDernière étape : mémorise la meilleure course. Garde tout ce qui vient des leçons précédentes. Le canevas comporte un BestText en haut à droite, et le panneau un NewBestText masqué (New best!) ; la scène les place dans deux nouveaux champs de GameManager, public TMP_Text bestText; et public GameObject newBestText;. Enregistre le meilleur score sous la clé BestRun, en mètres entiers :
- Dans
Start(), charge le meilleur score (0 pour un nouveau joueur) et affiche-le sous la formeBest: 57 m. - Dans
GameOver(), lorsque le nombre de mètres entiers de la course,Mathf.FloorToInt(distance), dépasse le meilleur score, enregistre le nouveau meilleur score, affiche-le et affichenewBestText. Une course plus courte ne change rien.
Le meilleur score est conservé lorsque tu relances une course et lorsque tu quittes le jeu. Appuie sur Play, établis un meilleur score et essaie de le battre, puis appuie sur Check.
Essayez vous-même
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);
}
}
Toutes les leçons de Créer de vrais jeux
1Texte à l’écran
Canvas et texteAfficher le scoreFormater les nombresUn compte à reboursRécapitulatif : compteur de vitesse4Scènes et niveaux
Charger une scèneRedémarrer le niveauNiveau suivantConserver entre les scènesRécapitulatif : sélection du niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons et écrans
Boutons et onClickLambdasRelier les éléments dans l’InspectorActiver et désactiver les panneauxBarres de santéRécapitulatif : boutique d’améliorations5Sauvegarder avec PlayerPrefs
Enregistrer un nombreCharger avec une valeur par défautMeilleur scoreEnregistrer les paramètresRécapitulatif : les pièces à la banque3Le gestionnaire du jeu
Un seul script gère le jeuLe SingletonLes états du jeuBasculer selon l’étatRécapitulatif : gestionnaire de manche6Projet : course sans fin
Trois voiesObstacles en vue