Unity PlayerPrefs Nedir? Nasıl Kullanılır?
Unity PlayerPrefs Nedir? Nasıl Kullanılır?
Hepinize merhaba arkadaşlar bu yazımda sizlere Unity de bulunan PlayerPrefs özelliğinden bahsedeceğim, iyi okumalar.
PlayerPrefs Nedir?
PlayerPrefs Basit düzeyde veri depolamamızı, kaydetmemizi sağlayan bir yapıdır. Tabi daha sonra bu kaydettiğimiz verileri istediğimiz yerde çekip tekrar kullanabiliyoruz.
PlayerPrefs genel olarak basit düzeydeki verileri depolamak için kullanırız. Bunlara örnek vermem gerekir ise;
- High Score (Yüksek puan) sayısını tutmak.
- Altın sayısını tutmak
- Bir sahneden diğerine geçtiğimizde scriptten bağımsız bir şekilde veriyi çekmek.
PlayerPrefs Nasıl Kullanılır?
Set Metotları - PlayerPrefs Oluşturma ve Düzenleme
PlayerPrefs.Set<VeriTipi>("hash", value);
Nasıl kullanıldığına örnek vermem gerekir ise aşağıdaki kodları inceleyelim.
PlayerPrefs.SetFloat("floatPP", 1.2f); // Flaot tipinde bir PlayerPrefs oluşturduk. PlayerPrefs.SetInt("integerPP", 10); // Int tipinde bir PlayerPrefs oluşturduk. PlayerPrefs.SetString("stringPP", "UrhobA"); // String tipinde bir PlayerPrefs oluşturduk.
Bunları düzenlemek isteseydik yine aynı şekilde düzenlemek istediğimiz verinin değerini değiştirip yazacaktık. Örneğin;
PlayerPrefs.SetFloat("floatPP", 99.99f); // Flaot tipinde bir PlayerPrefs oluşturduk. PlayerPrefs.SetInt("integerPP", 99); // Int tipinde bir PlayerPrefs oluşturduk. PlayerPrefs.SetString("stringPP", "www.urhoba.net"); // String tipinde bir PlayerPrefs oluşturduk.
Save() Metodu - PlayerPrefs Diske Yazma
PlayerPrefs.Save();
Neden Save() metodunu kullanmalıyım diye merak ettiğinizi düşünüyorum ve hemen açıklıyorum.
Unity PlayerPrefs ile kaydedilen verileri "OnApplicationQuit()" fonksiyonu çağırıldığı zaman diske yazar yani oyundan çıkış yapılmadan hemen önce veriler diske kaydedilir.
Oyundan beklenmedik bir şekilde çıkılması durumunda (Çökme, telefonun şarjının bitmesi vb...) o ana kadar olan veriler diske yazılmayacağı için veriler kaybolacaktır bunu önlemek için Save() metodunu kullanıyoruz.
Kullanımına örnek vermem gerekir ise yukarıdaki set metotlarının hemen altında kullanabiliriz.
PlayerPrefs.SetFloat("floatPP", 1.2f); // Flaot tipinde bir PlayerPrefs oluşturduk. PlayerPrefs.SetInt("integerPP", 10); // Int tipinde bir PlayerPrefs oluşturduk. PlayerPrefs.SetString("stringPP", "UrhobA"); // String tipinde bir PlayerPrefs oluşturduk. PlayerPrefs.Save(); // Verileri diske yazdırdık.
Get Metotları - PlayerPrefs Verisini Okuma
PlayerPrefs.Get<VeriTipi>("hash");
Aynı set metodu kullanır gibi tek farkı vurada "Set" yerine "Get" olarak yazıyoruz ve artık "value" kısmına bir şey yazmıyoruz. Hadi gelin kod ile nasıl kullandığımıza bir bakalım.
Debug.Log(PlayerPrefs.GetFloat("floatPP").ToString()); // Float bir değeri konsola yazdırdık. Debug.Log(PlayerPrefs.GetInt("integerPP").ToString()); // Int bir değeri konsola yazdırdık. Debug.Log(PlayerPrefs.GetString("stringPP")); // String bir değeri konsola yazdırdık. float floatDeger = PlayerPrefs.GetFloat("floatPP"); // Float bir değeri float bir değişkene aktardık. int intDeger = PlayerPrefs.GetInt("integerPP"); // Int bir değeri int bir değişkene aktardık. string stringDeger = PlayerPrefs.GetString("stringPP"); String bir değeri string bir değişkene aktardık.
Delete Metotları - PlayerPrefs Verileri Silme İşlemi
- DeleteAll();
- DeleteKey("hash");
DeleteAll() - Tüm PlayerPrefsleri Silmek
PlayerPrefs.DeleteAll();
Nasıl kullanılacağını kod ile incelememiz gerekir ise;
PlayerPrefs.SetFloat("floatPP", 1.2f); PlayerPrefs.SetInt("integerPP", 10); PlayerPrefs.SetString("stringPP", "UrhobA"); PlayerPrefs.DeleteAll(); // Oluşturduğumuz tüm PlayerPrefs verileri silindi.
DeleteKey("hast") - Tek Bir PlayerPrefs Verisini Silmek
PlayerPrefs.DeleteKey("hash");
PlayerPrefs.SetFloat("floatPP", 1.2f); PlayerPrefs.SetInt("integerPP", 10); PlayerPrefs.SetString("stringPP", "UrhobA"); PlayerPrefs.DeleteKey("floatPP"); // "floatPP" isimli PlayerPrefs silindi. PlayerPrefs.DeleteKey("stringPP"); // "stringPP" isimli PlayerPrefs silindi.
PlayerPrefs ile Bool Kontrolü Yapmak
void Start() { PlayerPrefsSetBool("boolDeneme", false); // Bool olarak PlayerPrefsimizi kaydediyoruz. bool durum = PlayerPrefsGetBool("boolDeneme"); // Bool olarak PlayerPrefsimizi çekiyoruz. Debug.Log(durum.ToString()); // Çektiğimiz veriyi konsola yazıdırıyoruz. } bool PlayerPrefsGetBool(string hash) // Veriyi çekmek için olan fonksiyonumuzu yazıyoruz. { bool durum = (PlayerPrefs.GetInt(hash) == 0) // ternary if ile int değerinde veri çekip, çekilen veri 0 ise false, değil ise 1 true olarak döndürüyoruz. ? false : true; return durum; } void PlayerPrefsSetBool(string hash, bool value) // Veriyi kaydetmek için olan fonksiyonumuzu yazıyoruz. { int deger = (value == false) // Gelen veri false ise 0, değil ise 1 olarak değer döndürüyoruz. ? 0 : 1; PlayerPrefs.SetInt(hash, deger); // Döndürdüğümüz sayısal değeri Int değerinde PlayerPrefs olarak ekliyoruz. }
Evet arkadaşlar PlayerPrefslerin kullanımları da bu şekildedir. PlayerPrefsler ile ilgili merak ettiğiniz herhangi bir şey olursa aşağıdaki yorumlar kısmından bana sorabilirsiniz.
Yorum Gönder