Menu
CoddyTech

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.

challenge icon

Sfida

Medio

Pompa 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 in best (0 per un nuovo giocatore), così ShowBest() lo mostra.
  • In EndRound(), quando points supera il record, salvalo, mostralo e mostra newBestText. 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;
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Creare veri giochi