Menu
CoddyTech

Muat dengan Nilai Default

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

Kunci yang belum pernah disimpan akan terbaca sebagai 0, dan 0 bukan nilai awal yang cocok untuk beberapa nilai. Dalam game balapan, pemain dapat memilih jumlah rival komputer yang ikut balapan, dan pemain baru seharusnya balapan melawan 3 rival. Setiap Get menerima argumen kedua, yaitu nilai default, yang dikembalikan saat kunci tidak ditemukan:

int rivals = PlayerPrefs.GetInt("Rivals", 3);
string driver = PlayerPrefs.GetString("Driver", "Rookie");

Setelah pemain menyimpan 0 rival agar bisa berlatih sendirian, GetInt("Rivals", 3) mengembalikan 0: nilai default hanya mengisi kunci yang belum ada. Karena itu, if (rivals == 0) rivals = 3; adalah cara yang salah untuk memberi nilai default. Cara ini tidak dapat membedakan 0 yang tersimpan dari kunci yang belum disimpan, dan menetapkan kembali 3 rival untuk setiap balapan latihan.

PlayerPrefs.HasKey(key) menjawab apakah suatu kunci pernah disimpan, apa pun nilainya, sehingga dapat membedakan game pertama dari game berikutnya. Game ini menyapa pembalap baru:

void Start()
{
    if (!PlayerPrefs.HasKey("Driver"))
    {
        Debug.Log("First race! Pick a name in the garage.");
    }
    string driver = PlayerPrefs.GetString("Driver", "Rookie");
    Debug.Log("Driver: " + driver);
}

Panggil HasKey sebelum kode apa pun yang menyimpan kunci tersebut: sejak pertama kali disimpan, hasilnya adalah true sampai kunci itu dihapus dengan PlayerPrefs.DeleteKey.

challenge icon

Tantangan

Sedang

Mesin arcade menyimpan kredit pemain dengan key Credits: tombol Space memainkan game dengan satu kredit, dan sisa kredit disimpan setelah setiap game. Pemain baru belum ditangani:

  • Pemain yang belum menyimpan apa pun memulai dengan 5 kredit gratis. Pemain yang sudah menggunakan semua kredit memiliki 0 kredit tersimpan, dan memulai dengan 0, bukan 5.
  • object welcomeText (Welcome! Here are 5 free credits) hanya ditampilkan kepada pemain yang belum menyimpan Credits. Pemain lainnya tidak melihatnya.

Tekan Play dan mainkan game, lalu tekan Stop dan Play lagi: pesan selamat datang sudah tidak ada. Lalu tekan Check.

Coba sendiri

using UnityEngine;
using TMPro;

public class ArcadeCredits : MonoBehaviour
{
    public TMP_Text creditsText;
    public GameObject welcomeText;
    private int credits;

    void Start()
    {
        credits = PlayerPrefs.GetInt("Credits");
        welcomeText.SetActive(false);
        ShowCredits();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && credits > 0)
        {
            credits--;
            PlayerPrefs.SetInt("Credits", credits);
            PlayerPrefs.Save();
            ShowCredits();
        }
    }

    void ShowCredits()
    {
        creditsText.text = "Credits: " + credits;
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Membangun Game Sungguhan