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.
Tantangan
SedangPenghitung 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
jumpsdenganPlayerPrefs.SetIntmenggunakan keyTotalJumps, lalu tulis ke disk denganPlayerPrefs.Save(). - Di
Start(), muat total yang tersimpan ke dalamjumpssebelum 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;
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level10Proyek: Platformer 3D
LintasanPlatform Bergerak2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di Bank