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.
Görev
OrtaZıplama sayısını oyunlar arasında kaydedilen, ömür boyu toplam bir sayı hâline getir.
Update()içinde,jumps++;satırından sonraPlayerPrefs.SetInt("TotalJumps", jumps);vePlayerPrefs.Save();ekle.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
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