PLAYERPREFS Kullanımı- Unity ile Oyuncuya ait verileri Kaydetme ve erişme

Herkes  Yazar Herkes Yazar

21 Ocak 2021 Yazılım Dilleri (147) /Unity (15) (73)

Paylaşmak güzeldir. Lütfen sizde paylaşın...


Oyun geliştiriyor ve oturumlar/sessions ya da bölümler/levels arasında geçiş yaparken verilerin kaybolmasını istemiyorsanız PlayerPrefs kullanabilirsiniz.

PlayerPrefs, oyuncu için özelleştirilmiş/oyuncuya ait verileri saklamanıza ve daha sonra bu verilere erişmenize olanak tanır.

Tüm Veri Tipleri İçin Kullanabilir Miyim  ?

Hayır. PlayerPrefs ile StringFloat ve Integer tiplerinde veriler saklanabilir.

PlayerPrefs Fonksiyonları

  • DeleteAll   : Kayıtlı tüm anahtar ve verileri siler
  • DeleteKey : Belirtilen anahtar ve onunla ilgili veriyi siler
  • GetFloat    : Belirtilen anahtar ile kaydedilmiş float tipindeki veriyi getirir
  • GetInt         : Belirtilen anahtar ile kaydedilmiş integer tipindeki veriyi getirir
  • GetString  : Belirtilen anahtar ile kaydedilmiş string tipindeki veriyi getirir
  • HasKey      : Belirtilen anahtar kayıtlı ise true döndürür
  • Save            : Düzenlenen tüm tercihleri diske yazar
  • SetFloat     : Float tipindeki veriyi belirtilen anahtar ile birlikte saklar
  • SetInt         : Integer tipindeki veriyi belirtilen anahtar ile birlikte saklar
  • SetString  : String tipindeki veriyi belirtilen anahtar ile birlikte saklar

 

Nasıl Kullanırım ?

PlayerPrefs ile veri saklama işlemi için bir veri ve bu veri için belirlediğiniz bir anahtarınız/key olmalı.

Örneğin; diyelim ki oyuncunun kazandığı skorları toplamak ve oturum ya da bölüm değişikliğinde kaybolmamak üzere bu toplam skoru kaydetmek istiyoruz. PlayerPrefs mantığını öğrenmek için skor verisini kullanıcıdan aldığımız aşağıdaki basit ekran üzerinden inceleyelim;

Bu örnekte PlayerPrefs ile kayıt altına alınacak “toplam skor verisi” için “totalScore” değişkenini ve “totalScoreKey” anahtarını kullanalım.

Veri saklama işlemleri için oluşturduğumuz “SaveScore” scripti;

 #region PlayerPrefs Tüm Zamanlarda Oyun Rekoru Ayarlaması
            TotalScoreText = GameObject.Find("Canvas/GameOver_ImgPnl/TotalScore_Txt").GetComponent<TextMeshProUGUI>();
            int totalScore;
            int gamescore = int.Parse(Score_Txt.text);
            if (PlayerPrefs.HasKey("totalScoreKey"))  //totalScoreKey anahtarıyla kaydedilmiş bir veri var mı ?
            {
                totalScore = PlayerPrefs.GetInt("totalScoreKey"); // totalScoreKey anahtarıyla kaydedilmiş veriyi getir
                if ((int)gamescore == (int)totalScore)
                {
                    TotalScoreText.text = "A little more attention. Same as your last score record:" + Score_Txt.text;
                }
                if ((int)gamescore > (int)totalScore)
                {
                    PlayerPrefs.SetInt("totalScoreKey", gamescore); //totalScoreKey anahtarıyla yeni veriyi kaydet
                    TotalScoreText.text = "Congratulations You broke your score record.! Your new score record:" + Score_Txt.text;
                }
                else
                {
                    TotalScoreText.text = "All-time score record in the game: " + totalScore;
                }
            }
            else
            {
                //Debug.Log("here" + Score_Txt.ToString());
                PlayerPrefs.SetInt("totalScoreKey", gamescore); //totalScoreKey anahtarıyla yeni veriyi kaydet
                TotalScoreText.text = "Your new score record " + Score_Txt.text;
            }
            #endregion
Bu sayede toplam skor verisi/totalScore, PlayerPrefs kullanılarak saklandığı için oturum ya da bölüm değişikliklerinde kaybolmamış olur.
PlayerPrefs kullanarak kaydettiğimiz bu verileri silmek istediğimizde, “Reset” butonu ile çalışacak “ResetScore” fonksiyonu;
public void ResetScore()
 {
    PlayerPrefs.DeleteAll(); // Kayıtlı tüm anahtar ve verileri siler
    totalScore = 0;
    Debug.Log("The score was reset!");
 }​


Paylaşmak güzeldir. Lütfen sizde paylaşın...



Herkesyazar Ara