Meilleur score
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 24 sur 56.
Un meilleur score est le meilleur résultat de toutes les parties jouées ; il est donc enregistré dans PlayerPrefs et ne change que lorsqu’une partie le dépasse. Cette table de flipper vérifie le score lorsque la dernière bille est perdue :
void GameOver()
{
int best = PlayerPrefs.GetInt("PinballBest", 0);
if (score > best)
{
PlayerPrefs.SetInt("PinballBest", score);
PlayerPrefs.Save();
Debug.Log("New high score: " + score);
}
}C’est la comparaison qui en fait un meilleur score. Sans elle, une partie à 300 après un meilleur score de 5000 enregistrerait 300, et le record serait perdu. Compare avec le meilleur score enregistré, et non avec une valeur qui repart de 0 à chaque partie : un champ dans lequel rien n’a été chargé vaut 0 après chaque redémarrage, donc n’importe quel score le dépasse. score > best conserve l’ancien record en cas d’égalité, tandis que score >= best considérerait une égalité comme un nouveau meilleur score.
Pour afficher le meilleur score pendant la partie, charge-le dans un champ dans Start(), puis affiche ce champ. Lorsqu’une partie le dépasse, mets à jour le champ, PlayerPrefs et le texte ensemble, afin que l’écran et la valeur enregistrée ne soient jamais en désaccord.
Défi
MoyenPompe à ballon : maintiens la barre d’espace pour gonfler le ballon, à raison de 20 points par seconde, puis relâche pour encaisser les points. Si tu dépasses 100, le ballon éclate et tu obtiens 0 point. Le pompage, l’éclatement et les points sont déjà écrits, et lorsque la manche se termine, EndRound() est appelée une seule fois, avec le score de la manche dans points. Ajoute un meilleur score, enregistré sous la clé BestPoints :
- Dans
Start(), charge le meilleur score dansbest(0 pour un nouveau joueur), afin queShowBest()l’affiche. - Dans
EndRound(), lorsquepointsdépasse le meilleur score, enregistre-le, affiche-le et affichenewBestText. Une manche qui ne bat pas le meilleur score ne change rien.
Appuie sur Play et gonfle quelques ballons (Stop puis Play démarre une nouvelle manche), puis clique sur Check.
Essayez vous-même
using UnityEngine;
using TMPro;
public class BalloonPump : MonoBehaviour
{
public TMP_Text pointsText;
public TMP_Text bestText;
public GameObject newBestText;
public float pumpRate = 20f;
private float air;
private int points;
private int best;
private bool roundOver;
void Start()
{
ShowBest();
}
void Update()
{
if (roundOver) return;
if (Input.GetKey(KeyCode.Space))
{
air += pumpRate * Time.deltaTime;
transform.localScale = Vector3.one * (1f + air / 50f);
pointsText.text = "Points: " + Mathf.FloorToInt(air);
if (air > 100f)
{
points = 0;
pointsText.text = "Pop! Points: 0";
GetComponent<Renderer>().enabled = false;
roundOver = true;
EndRound();
}
}
else if (Input.GetKeyUp(KeyCode.Space))
{
points = Mathf.FloorToInt(air);
pointsText.text = "Points: " + points;
roundOver = true;
EndRound();
}
}
void EndRound()
{
// Enregistrer un nouveau record ici
}
void ShowBest()
{
bestText.text = "Best: " + best;
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
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 banque