Menu
CoddyTech

Simpan Angka

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

Setiap field dimulai dengan nilai default saat game dimulai. Pemain yang mengumpulkan 40 permata, keluar, lalu kembali besok akan mendapati jumlah permatanya 0, karena keluar mengakhiri game beserta semua isinya. PlayerPrefs menyimpan nilai kecil di perangkat pemain di antara sesi game. Setiap nilai disimpan dengan kunci, berupa string pilihanmu, menggunakan SetInt, SetFloat, atau SetString:

PlayerPrefs.SetString("PlayerName", "Robin");
PlayerPrefs.SetInt("LevelReached", 4);
PlayerPrefs.SetFloat("HoursPlayed", 2.5f);
PlayerPrefs.Save();

Untuk membaca kembali nilai, panggil Get dengan tipe yang sama dan kunci yang sama. Kunci yang belum pernah disimpan akan terbaca sebagai 0, 0, atau string kosong. Jadi, pada game pertama pemain, sapaan ini menampilkan nama kosong dan level 0:

void Start()
{
    string player = PlayerPrefs.GetString("PlayerName");
    int level = PlayerPrefs.GetInt("LevelReached");
    Debug.Log(player + " is on level " + level);
}

Kunci peka terhadap huruf besar-kecil: GetInt("levelreached") membaca kunci yang belum pernah disimpan dan mengembalikan 0. Kunci menyimpan satu tipe, jadi bacalah dengan Get yang sesuai dengan Set-nya. Simpan nilai saat nilainya berubah, bukan hanya saat game berakhir. Unity menulis PlayerPrefs ke disk saat game keluar secara normal, dan PlayerPrefs.Save() langsung menulisnya, sehingga kerusakan sistem tidak akan membuatnya hilang. Field static bukan solusi untuk hal ini: field tersebut bertahan selama game berjalan, dan keluar juga mengakhirinya.

challenge icon

Tantangan

Sedang

Penghitung Hopper, JumpCounter, menghitung lompatannya di layar, tetapi hitungannya hanya berupa field biasa, jadi setiap permainan baru dimulai lagi dari Jumps: 0. Jadikan hitungan itu total seumur hidup yang berlanjut dari satu permainan ke permainan berikutnya:

  • Setelah setiap lompatan, simpan jumps dengan PlayerPrefs.SetInt menggunakan key TotalJumps, lalu tulis ke disk dengan PlayerPrefs.Save().
  • Di Start(), muat total yang tersimpan ke dalam jumps sebelum teks menampilkannya.

Tekan Play dan lompat beberapa kali, lalu tekan Stop dan Play lagi: hitungannya akan berlanjut. Lalu tekan Check.

Coba sendiri

using UnityEngine;
using TMPro;

public class JumpCounter : MonoBehaviour
{
    public TMP_Text jumpsText;
    public float hop = 5f;
    private Rigidbody rb;
    private int jumps;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        ShowJumps();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.linearVelocity = Vector3.up * hop;
            jumps++;
            ShowJumps();
        }
    }

    void ShowJumps()
    {
        jumpsText.text = "Jumps: " + jumps;
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Membangun Game Sungguhan