Playerprefs fonksiyonu verilerimizi kalıcı olarak cihaza kaydetmemize yarıyor. Bu da oyunlarımızda  paraları, expleri, skorları, oyun ayarlarının ve daha aklıma gelmeyen birçok şeyin tutulmasında işimize yarar.
En çok kullanılan alanı tabi ki oyun ayarlarıdır. En basiti sesin açık veya kapalı olmasını playerprefs ve if döngüsünü kullanarak rahatça ayarlayabilirsiniz

Hızlı ve kullanışlı bir örnekle açıklayayım. Totalscore anahtarıyla kaydedilmiş bir veri var mı? var ise o anahtardaki veriyi al, yoksa o anahtar kelimeye 0 verisini aktar.

 if (PlayerPrefs.HasKey("totalscore"))  //totalscoreanahtarıyla kaydedilmiş bir veri var mı ?
   {
      totalScore = PlayerPrefs.GetInt("totalscore"); // totalscore anahtarıyla kaydedilmiş veriyi getir
    
   }else {
      PlayerPrefs.SetInt("totalscore", 0);// totalscore anahtarına 0 verisini kaydet
   }
 

Böylece ne yapmış olduk oyunu ilk açan birisinin cihazında totalscore diye bir veri olmayacağı için skoru 0 olacaktır oyunu oynadıkça yeni skorlar kazanacak oyundan cıkıp girdiginde yine bu kontrol yapılacak ve cihazda bu anahtar kelimeyle bir veri kaydedilmiş olduğu için var olan değeri alıp oyunda kullanacak kullanıcının toplam skoru oyunu kapatıp açtığında sıfırlanmamış olacaktır.

Bir oyun üzerinden açıklayayım.
Bir brekaout oyunu hepimiz oynamışızdır. Altta bir tahtamız ve topumuz olur, topla yukarıdaki blokları kırmaya calısırız. Bloklar bitince bir üst seviyeye geçeriz.

Level 1 sahnesinin scriptinde

function Update () {

if(GameObject.FindGameObjectsWithTag("block").Length<1){  // oyunda hiç blok objesi kalmadıysa

PlayerPrefs.SetInt("SavedLevel1", 1); //playerprefs fonksiyonuyla  1 olarak kaydettim
Debug.Log("SavedLevel = 1");  //bilgilendirme amaçlı ekrana SavedLevel = 1 yazdır

Application.LoadLevel("levelsahnesi");  //level sahnesini yükle
}

}

Menu sahnesinin scriptinde

var levelReached1 : int = 0;   //levelReached1 adlı int bir degişken oluşturup 0'a eşitledim

levelReached1 =PlayerPrefs.GetInt("SavedLevel1");   //playerprefle level1 sahnesinde kaydettiğim veriyi çektim ve levelReached1'e eşitledim

function Update () {

if(levelReached1 == 1)   //levelReached1=1 e eşitse yani 1. bölümdeki bütün blokları kırdıysa alttakiler olsun
{

// yapılacaklar

}
}

 

 

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

PlayerPrefs kullanımı böyledir peki bu veriler nereye kayıt edilir.

Windows: Registry -> HKCU\Software\[kuruluş_adı]\[ürün_adı]
Windows WebPlayer: %APPDATA%\Unity\WebPlayerPrefs\ [kuruluş_adı]\[ürün_adı]
Mac OS X: ~/Library/Preferences/ unity.[company name].[product name].plist
Mac OS X WebPlayer: ~/Library/Preferences/Unity/WebPlayerPrefs/ unity.[kuruluş_adı]\[ürün_adı].plist

 

About the author

Benan DİNDAR

5 Comments

Leave a Comment

Powered by themekiller.com anime4online.com animextoon.com