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.
Görev
OrtaYeni bir oyuncuya 5 ücretsiz kredi ve bir karşılama mesajı ver.
Start()içinde varsayılan bir değerle yükle:credits = PlayerPrefs.GetInt("Credits", 5);.welcomeText.SetActive(false);ifadesiniwelcomeText.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
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki ParalarKendi başına pratik yap: Unity playground