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 / 56.

Oyun başladığında her alan varsayılan değerinden başlar. 40 mücevher toplayan, oyundan çıkıp 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 sonlandırır. PlayerPrefs, oyunlar arasında küçük değerleri oyuncunun cihazında saklar. Her değer, seçtiğin bir dize olan 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 yöntemini çağır. Hiç kaydedilmemiş bir anahtar 0, 0 veya boş bir dize 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ür tutar; bu yüzden onu, Set yöntemiyle eşleşen Get yöntemiyle oku. Bir değeri yalnızca oyun sona erdiğinde değil, değiştiğinde kaydet. Unity, oyun normal şekilde kapandığında PlayerPrefs'i diske yazar; PlayerPrefs.Save() ise bunları hemen yazar, böylece bir çökme onları kaybettiremez. Bir static alan bu durumu aşmanın yolu 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

Hopper'ın JumpCounter'ı ekranda yaptığı zıplamaları sayar, ancak sayaç basit bir alandır; bu yüzden her yeni oyun tekrar Jumps: 0 ile başlar. Bunu oyundan oyuna devam eden ömür boyu toplam hâline getir:

  • Her zıplamadan sonra jumps değerini TotalJumps anahtarı altında PlayerPrefs.SetInt ile kaydet ve PlayerPrefs.Save() ile diske yaz.
  • Start() içinde, metin göstermeden önce kaydedilen toplamı jumps içine yükle.

Play'e basıp birkaç kez zıpla, ardından Stop'a ve tekrar Play'e bas: sayaç kaldığı yerden devam eder. Sonra Check'e 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;
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

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