Menu
CoddyTech

Skor Tertinggi

Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 24 dari 56.

Skor tertinggi adalah hasil terbaik dari setiap permainan, jadi skor ini disimpan di PlayerPrefs dan hanya berubah saat sebuah permainan melampauinya. Meja pinball ini memeriksa skor saat bola terakhir habis:

void GameOver()
{
    int best = PlayerPrefs.GetInt("PinballBest", 0);
    if (score > best)
    {
        PlayerPrefs.SetInt("PinballBest", score);
        PlayerPrefs.Save();
        Debug.Log("New high score: " + score);
    }
}

Perbandingan itulah yang menentukan apakah skor tersebut menjadi skor tertinggi. Tanpanya, permainan dengan skor 300 setelah skor terbaik 5000 akan menyimpan 300, dan rekor itu pun hilang. Bandingkan dengan skor terbaik yang tersimpan, bukan dengan nilai yang dimulai dari 0 di setiap permainan: field yang tidak memuat apa pun bernilai 0 setelah setiap permainan dimulai ulang, sehingga skor apa pun akan melampauinya. score > best mempertahankan rekor lama jika skornya sama, sedangkan score >= best akan menganggap skor yang sama sebagai skor tertinggi baru.

Untuk menampilkan skor tertinggi selama permainan, muat nilainya ke dalam field di Start() lalu tampilkan field tersebut. Saat sebuah permainan melampaui skor itu, perbarui field, PlayerPrefs, dan teks secara bersamaan agar tampilan layar dan nilai yang tersimpan selalu sama.

challenge icon

Tantangan

Sedang

Pompa Balon: tahan Space untuk memompa udara ke dalam balon, 20 poin per detik, lalu lepaskan untuk mengumpulkan poin. Jika memompa melewati 100, balon akan meletus dan menghasilkan 0 poin. Proses pemompaan, balon meletus, dan poin sudah ditulis, lalu saat ronde berakhir, EndRound() dipanggil satu kali, dengan skor ronde di points. Tambahkan skor tertinggi yang disimpan dengan kunci BestPoints:

  • Di Start(), muat skor terbaik ke best (0 untuk pemain baru), agar ShowBest() menampilkannya.
  • Di EndRound(), saat points mengalahkan skor terbaik, simpan nilainya, tampilkan, dan tampilkan newBestText. Ronde yang tidak mengalahkan skor terbaik tidak mengubah apa pun.

Tekan Play dan pompa beberapa balon (Stop lalu Play akan memulai ronde baru), lalu tekan Check.

Coba sendiri

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()
    {
        // Simpan rekor terbaik baru di sini
    }

    void ShowBest()
    {
        bestText.text = "Best: " + best;
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Membangun Game Sungguhan