Menu
CoddyTech

Bir Sayı Kaydetme

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 22 / 60.

Oyun başladığında her alan varsayılan değerinden başlar. 40 mücevher toplayıp oyundan çıkan ve ertesi gün geri gelen bir oyuncu, mücevher sayısını 0 olarak görür; çünkü oyundan çıkmak oyunu ve içindeki her şeyi sona erdirir. PlayerPrefs, oyunlar arasında küçük değerleri oyuncunun cihazında saklar. Her değer, seçtiğin bir metin olan bir anahtar altında SetInt, SetFloat veya SetString ile saklanır:

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

Bir değeri yeniden okumak için aynı anahtarla aynı türün Get metodunu çağır. Daha önce hiç kaydedilmemiş bir anahtar 0, 0 veya boş bir metin olarak okunur; bu nedenle oyuncunun ilk oyununda bu selamlama boş bir ad ve 0. seviye gösterir:

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

Anahtarlar büyük/küçük harfe duyarlıdır: GetInt("levelreached"), hiç kaydedilmemiş bir anahtarı okur ve 0 döndürür. Bir anahtar tek bir türde değer tutar; bu nedenle onu, değerini ayarladığın Set metoduyla eşleşen Get metoduyla oku. Bir değeri yalnızca oyun bittiğinde değil, değiştiğinde kaydet. Unity, oyun normal şekilde kapandığında PlayerPrefs verilerini diske yazar ve PlayerPrefs.Save() bunları hemen yazar; böylece bir çökme verilerin kaybolmasına yol açamaz. static bir alan bunun için çözüm değildir: oyun çalıştığı sürece varlığını sürdürür ve oyundan çıkmak bunu da sona erdirir.

challenge icon

Görev

Orta

Zıplama sayısını oyunlar arasında kaydedilen, ömür boyu toplam bir sayı hâline getir.

  1. Update() içinde, jumps++; satırından sonra PlayerPrefs.SetInt("TotalJumps", jumps); ve PlayerPrefs.Save(); ekle.
  2. Start() içinde, ShowJumps(); satırının üstüne şu kodu ekleyerek değeri yükle: jumps = PlayerPrefs.GetInt("TotalJumps");.

“Oyna” düğmesine basıp zıpla, ardından “Stop” düğmesine basıp tekrar “Oyna” düğmesine bas: sayaç kaldığı yerden devam eder. Ardından “Kontrol et” düğmesine bas.

Kendin dene

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;
    }
}

Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground