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

MoPub UNITY Plugin
March 01, 2019
MoPub Nedir ? Nasıl Kullanılır ?
February 27, 2019
Veri Yapıları – Ağaçlar
November 16, 2016
Wireframe Nedir,Uygulama Alanları Nelerdir
November 16, 2016

12 Comments

Kemal
Reply 23 Nisan 2018

Çok teşekkürler :)

realGamer
Reply 1 Mart 2019

Oldukça faydalı bir içerik oluşturmuşsunuz. Tebrikler !

    Setenay Ceren Ağdaş
    Reply 27 Mart 2019

    Yorumunuz için teşekkürler.

Altan
Reply 8 Nisan 2019

Güzel Paylaşım Olmuş Peki her Level için ayrı skor kaydı almak için nasıl bir döngü yapmam lazım. Teşekkürler

    Setenay Ceren Ağdaş
    Reply 9 Nisan 2019

    SetString, GetString ve Json Serialization kullanarak yazabilirsiniz. Json Serialization için bu linki takip edebilirsiniz.

      Altan
      Reply 11 Nisan 2019

      Teşekkürler..

        Setenay Ceren Ağdaş
        Reply 12 Nisan 2019

        Rica ederim.

Semih
Reply 26 Nisan 2020

Teşekkürler, sade temiz anlatım olmuş.

    Setenay Ceren Ağdaş
    Reply 30 Nisan 2020

    Yorumunuz için teşekkürler.

Yaşam
Reply 18 Ocak 2021

Gayet sade ve güzel bir anlatım olmuş.

    Setenay Ceren Ağdaş
    Reply 19 Ocak 2021

    Yorumunuz için teşekkürler :)

ahmet
Reply 12 Mart 2023

Mekemmel Ötesi Şahane olmuş......

Bir Yorum Bırakın