Unity – PlayerPrefs Kullanımı


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 String, Float 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;

 

score_1

 

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;

public class SaveScore : MonoBehaviour
{
   int totalScore;  // toplam skor verisi
   Text scoreTxt;   // toplam skor bilgisinin ekrana yazıldığı Text objesi
   int newScore;    // girilen yeni skor verisi
}

Kullanıcı skor verisini girip “Save” butonuna tıkladığında, yine “SaveScore” scriptindeki “Score” fonksiyonu devreye girer;

 
public void Score()
{
   newScore = 0; 
   InputField scoreInput = GameObject.Find("ScoreInput").GetComponent<InputField>(); // kullanıcıdan alınan skor bilgisi için kullanılan InputField
   newScore = Convert.ToInt32(scoreInput.text);

   if (PlayerPrefs.HasKey("totalScoreKey"))  //totalScoreKey anahtarıyla kaydedilmiş bir veri var mı ?
   {
      totalScore = PlayerPrefs.GetInt("totalScoreKey"); // totalScoreKey anahtarıyla kaydedilmiş veriyi getir
      Debug.Log("PlayerPrefs has totalScoreKey");
   }else {
      Debug.Log("There is no totalScoreKey");
   }

   totalScore += newScore;
   PlayerPrefs.SetInt("totalScoreKey", totalScore); // totalScoreKey anahtarıyla totalScore verisini sakla
   scoreInput.text = "";
   scoreTxt.text = "Total Score \n " + totalScore.ToString();
}

Bu sayede toplam skor verisi/totalScore, PlayerPrefs kullanılarak saklandığı için oturum ya da bölüm değişikliklerinde kaybolmamış olur.

 

reset_1

 

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

 

PlayerPrefs ile ilgili detaylı bilgiye ulaşmak isterseniz burayı ziyaret edebilirsiniz.

İLGİNİZİ ÇEKEBİLİR

Veri Yapıları – Ağaçlar
November 16, 2016
Wireframe Nedir,Uygulama Alanları Nelerdir
November 16, 2016

Bir Yorum Bırakın