Menu
CoddyTech

Varsayılan Değerle Yükleme

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

Hiç kaydedilmemiş bir anahtar 0 olarak okunur ve bazı değerler için 0 iyi bir başlangıç değildir. Bir yarış oyunu, oyuncunun yarışa kaç bilgisayar rakibinin katılacağını seçmesine olanak tanır ve yeni bir oyuncu 3 rakibe karşı yarışmalıdır. Her Get, anahtar eksik olduğunda döndürdüğü ikinci bir bağımsız değişken olan varsayılan değeri alır:

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

Oyuncu tek başına antrenman yapmak için 0 rakip kaydettiğinde, GetInt("Rivals", 3) 0 döndürür: varsayılan değer yalnızca eksik bir anahtarın yerini alır. Bu nedenle, varsayılan değer atamak için if (rivals == 0) rivals = 3; kullanmak yanlıştır. Kaydedilmiş bir 0 ile hiç kaydedilmemiş olma durumunu ayırt edemez ve her antrenman yarışına yeniden 3 rakip ekler.

PlayerPrefs.HasKey(key), değeri ne olursa olsun bir anahtarın daha önce kaydedilip kaydedilmediğini yanıtlar; böylece ilk oyunu sonraki oyunlardan ayırt eder. Bu oyun yeni bir sürücüyü karşılar:

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

Anahtarı kaydeden herhangi bir koddan önce HasKey ile sorgulama yap: ilk kayıttan itibaren anahtar PlayerPrefs.DeleteKey ile silinene kadar true yanıtını verir.

challenge icon

Görev

Orta

Yeni bir oyuncuya 5 ücretsiz kredi ve bir karşılama mesajı ver.

  1. Start() içinde varsayılan bir değerle yükle: credits = PlayerPrefs.GetInt("Credits", 5);.
  2. welcomeText.SetActive(false); ifadesini welcomeText.SetActive(!PlayerPrefs.HasKey("Credits")); ile değiştir.

“Oyna”ya bas ve bir oyun oyna, ardından “Durdur”a ve “Oyna”ya bas: karşılama mesajı artık görünmüyor. Ardından “Kontrol et”e bas.

Kendin dene

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

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

Kendi başına pratik yap: Unity playground