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 / 56.
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 izin verir ve yeni bir oyuncu 3 rakibe karşı yarışmalıdır. Her Get, anahtar bulunmadığında döndüreceği ikinci bir argüman 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 yerine kullanılır. Bu nedenle, varsayılan bir değer vermek için if (rivals == 0) rivals = 3; kullanmak yanlış bir yöntemdir. Kaydedilmiş bir 0 ile hiç kaydedilmemiş bir değeri 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 kullanın: ilk kayıttan itibaren, anahtar PlayerPrefs.DeleteKey ile kaldırılana kadar true yanıtını verir.
Görev
OrtaOyun salonu makinesi, oyuncunun kredilerini Credits anahtarı altında tutar: Boşluk tuşu bir kredi karşılığında oyun oynatır ve kalan krediler her oyundan sonra kaydedilir. Yeni oyuncular henüz ele alınmıyor:
- Kaydedilmiş hiçbir verisi olmayan bir oyuncu 5 ücretsiz krediyle başlar. Tüm kredilerini kullanmış bir oyuncunun kaydedilmiş kredisi 0'dır ve 5 değil, 0 ile başlar.
welcomeTextnesnesi (Hoş geldin! İşte 5 ücretsiz kredi) yalnızca kaydedilmişCreditsdeğeri olmayan bir oyuncuya gösterilir. Diğer hiçbir oyuncu bunu görmez.
Play'e basıp bir oyun oynayın, ardından Stop'a ve tekrar Play'e basın: hoş geldin mesajı artık görünmez. Ardından Check'e basın.
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;
}
}
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
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi4Sahneler ve Bölümler
Bir Sahne YüklemeBölümü Yeniden BaşlatmaSonraki BölümSahneler Arasında SaklamaTekrar: Bölüm Seçimi10Proje: 3D Platform Oyunu
ParkurHareketli Platformlar2Düğ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 Paralar