Punteggio massimo
Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 24 di 56.
Il punteggio più alto è il miglior risultato di tutte le partite giocate, quindi viene memorizzato in PlayerPrefs e cambia solo quando una partita lo supera. Questo flipper controlla il punteggio quando l’ultima pallina finisce in buca:
void GameOver()
{
int best = PlayerPrefs.GetInt("PinballBest", 0);
if (score > best)
{
PlayerPrefs.SetInt("PinballBest", score);
PlayerPrefs.Save();
Debug.Log("New high score: " + score);
}
}È il confronto a determinare se si tratta di un nuovo punteggio record. Senza di esso, una partita con un punteggio di 300 dopo un record di 5000 salverebbe 300 e il record andrebbe perso. Confronta il punteggio con il record salvato, non con qualcosa che parte da 0 a ogni partita: un campo di cui non è stato caricato alcun valore è 0 dopo ogni riavvio, quindi qualsiasi punteggio lo supera. score > best mantiene il vecchio record in caso di parità, mentre score >= best considererebbe una parità un nuovo record.
Per mostrare il record durante il gioco, caricalo in un campo in Start() e mostra quel campo. Quando una partita lo supera, aggiorna insieme il campo, PlayerPrefs e il testo, così il valore sullo schermo e quello salvato non saranno mai in disaccordo.
Sfida
MedioPompa palloncini: tieni premuto Space per pompare aria nel palloncino, 20 punti al secondo, e rilascia per incassare i punti. Se pompi oltre 100, scoppia e ottieni 0 punti. Il pompaggio, lo scoppio e i punti sono già implementati e, quando il round termina, viene chiamato una sola volta EndRound(), con il punteggio del round in points. Aggiungi un record, salvato con la chiave BestPoints:
- In
Start(), carica il record inbest(0 per un nuovo giocatore), cosìShowBest()lo mostra. - In
EndRound(), quandopointssupera il record, salvalo, mostralo e mostranewBestText. Un round che non supera il record non cambia nulla.
Premi Play e pompa alcuni palloncini (Stop e Play avviano un nuovo round), poi premi Check.
Provalo tu
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()
{
// Salva qui un nuovo record
}
void ShowBest()
{
bestText.text = "Best: " + best;
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Creare veri giochi
1Testo sullo schermo
Canvas e testoMostra il punteggioFormattare i numeriUn timer per il conto alla rovesciaRiepilogo: tachimetro4Scene e livelli
Caricare una scenaRiavviare il livelloLivello successivoMantenere i dati tra le sceneRiepilogo: selezione del livello10Progetto: Platform 3D
Il percorsoPiattaforme mobili2Pulsanti e schermate
Pulsanti e onClickLambdaCollegare nell'InspectorPannelli attivi e disattiviBarre della saluteRiepilogo: negozio degli upgrade5Salvare con PlayerPrefs
Salvare un numeroCaricare con un valore predefinitoPunteggio massimoSalvare le impostazioniRiepilogo: monete in banca8Controller del personaggio
CharacterController.MoveGravità manualeSaltoSpingere gli oggettiMuoviti dove guardiRiepilogo: doppio salto3Il gestore del gioco
Uno script gestisce il giocoIl SingletonStati di giocoSelezionare lo statoRiepilogo: gestore del round6Progetto: Corsa infinita
Tre corsieOstacoli in arrivo9Il nuovo sistema di input
Due sistemi di inputTastiera e mousePremuto in questo frameAzioni di inputRiepilogo: cambio di input